Opencv python - 检查图像中的特定像素值

时间:2018-04-08 10:23:53

标签: python opencv image-processing

假设我在opencv中有一张图片。 E.g。

img = cv2.imread(file_path)

让我们说我有一个像素值。 E.g。

pixel = np.array([200,200,200])

我想知道img中是否有任何像素值为pixel

这样做的最佳方式是什么?

我试过img.any(像素),但这不起作用。我知道你可以手动检查使用循环,但我确信必须有更优雅的方式。

我只需要一个布尔值是或否响应。

2 个答案:

答案 0 :(得分:0)

我的第一个想法是重塑数组,然后在将整形数组转换为列表后进行in检查。

演示:

>>> a = np.array([[[1, 2, 3], [4,5,6]], [[7,8,9], [10,11,12]]])
>>> a
array([[[ 1,  2,  3],
        [ 4,  5,  6]],

       [[ 7,  8,  9],
        [10, 11, 12]]])
>>> shaped = a.reshape(a.size/3, 3)
>>> shaped
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [ 7,  8,  9],
       [10, 11, 12]])
>>> [4, 5, 6] in shaped.tolist()
True
>>> [6, 5, 4] in shaped.tolist()
False

(可能存在更有效的解决方案。)

答案 1 :(得分:0)

我不知道您实际需要查找的内容,但是如果您需要查看图片中的任何像素是否值为200,请执行以下操作:

print((a==200).any())

如果数组中存在值为200的像素,则会生效,否则您将得到false。 希望这能解决您的问题。