我有[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/

10-12 16:48