【发布时间】:2018-10-25 06:05:59
【问题描述】:
我有一个 RGB 图像存储为一个 numpy 数组。我有一个颜色数组,我将在图像中搜索这些颜色并将这些 RGB 值替换为相同的标量值。其余不匹配的 RGB 值应简单地替换为 0。
我正在搜索的颜色可能如下所示,
colors = []
colors.append((69, 0, 9, 17))
colors.append((196, 127, 128,1))
colors.append((199, 5, 126, 19))
colors.append((55, 127, 126, 4))
colors.append((0, 127, 29, 2))
colors.append((68, 6, 124, 18))
每种颜色的第 4 个值是替换相应 RGB 值的值。
我尝试使用np.asin,但它不搜索数组。它只搜索标量。现在我正在使用 for 循环,但它非常慢。
for i in range(image.shape[0]):
for j in range(image.shape[1]):
match = -1
for k in range(len(colors)):
match = k
for l in range(3):
if image[i,j,l] != colors[k][l]:
match=-1
break
if match >=0 :
break
val = [0,0,0]
if match >= 0:
val = [colors[match][3],colors[match][3],colors[match][3]]
for l in range(3):
image[i,j,l] = val[l]
非常感谢任何有效的方法。
【问题讨论】:
-
这应该不起作用:
colors[k,l],对吧? -
@b-fg 你是对的。它是一个伪代码来表达我正在尝试的内容。可能有一些错误。
-
请始终发布最少的完整且经过验证的代码。
标签: python arrays numpy indexing python-3.6