Python, RGB color comparisons
我有一个来自OpenCV图像的像素,它的RGB格式是[R,G,B]。我想运行一个测试,这样如果我发现颜色比[150150150]深,我就停止一个for循环。
这就是我目前为止所拥有的:
1 2 3 4 5 6 7 | 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数组。这意味着比较操作将被向量化,并返回一个布尔值数组,例如
1 2 | >>> image[l,d] <= [150,150,150] array([ True, True, True], dtype=bool) |
现在,您要检查是否满足所有项对的条件。这就是
1 2 | >>> np.all(image[l,d] <= [150,150,150]) True |
号
实际上,numpy数组有一个成员方法
1 2 | >>> (image[l,d] <= [150,150,150]).all() True |