我有[r,g,b]中RGB格式的OpenCV图像中的一个像素。我想进行测试,以便如果发现比[150,150,150]还要深的颜色,则停止for循环。
这是我到目前为止所拥有的:
def test():
for l in range(y, y+h):
for d in range(x, x+w):
print(image[l,d][0])
if image[l,d] <= [150,150,150]:
return;
image[l,d] = [0,0,0]
虽然不起作用。有任何想法吗?
最佳答案
由于Python中的OpenCV图像表示为numpy数组,因此每个像素值也将是一个numpy数组。这意味着比较操作将被矢量化,并返回一个 bool(boolean) 值数组,例如
>>> image[l,d] <= [150,150,150]
array([ True, True, True], dtype=bool)
现在,您要检查所有项目对是否都满足条件。这就是
numpy.all
发挥作用的地方。>>> np.all(image[l,d] <= [150,150,150])
True
实际上,numpy数组具有成员方法
all()
,其作用相同。>>> (image[l,d] <= [150,150,150]).all()
True
关于python - Python,RGB颜色比较,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45650684/