簡體   English   中英

OpenCV Python-檢查圖像中的特定像素值

[英]Opencv python - check if particular pixel value in image

可以說我在opencv中有一個映像。 例如

img = cv2.imread(file_path)

還可以說我有一個像素值。 例如

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

我想知道img是否有像素值為pixel

做這個的最好方式是什么?

我嘗試了img.any(pixel),但是不起作用。 我知道您可能可以使用循環手動檢查,但是我敢肯定必須存在更優雅的方法。

我只需要布爾值是或否響應。

我的第一個想法是重新排列數組的形狀,然后在將成形的數組轉換為列表之后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

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

我不知道您實際需要如何查找,但是如果您需要查看圖像中是否有任何像素的值為200,請執行以下操作:

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

如果數組中存在值為200的像素,則為true,否則為false。 希望這可以解決您的查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM