可以说我在opencv中有一个镜像。例如。

img = cv2.imread(file_path)

还可以说我有一个像素值。例如。
pixel = np.array([200,200,200])

我想知道img中是否有像素值为pixel的像素。

做这个的最好方式是什么?

我尝试了img.any(pixel),但是不起作用。我知道您可能可以使用循环手动检查,但是我敢肯定必须存在一种更优雅的方法。

我只需要 bool(boolean) 值是或否响应。

最佳答案

我的第一个想法是重整形数组,然后在将整形后的数组转换为列表之后执行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

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

09-30 12:55