天天看點

python紅色圖形識别,如何使用python opencv檢測圖像上的紅色粒子?

使用HSV顔色空間是非常好的。如果顯示圖像的色調和飽和度分量,您将看到紅色粒子具有相對較大的色調和較小的飽和度。在

順便說一句,你的圖像分辨率相當大。我将減少采樣,以便将圖像拟合到post中,同時最小化處理時間。首先讓我們加載您的圖像,将其調整到25%的分辨率,然後提取出HSV元件:import cv2

import numpy as np

im = cv2.imread('sample.png')

im_resize = cv2.resize(im, None, None, 0.25, 0.25)

out = cv2.cvtColor(im_resize, cv2.COLOR_BGR2HSV)

stacked = np.hstack([out[...,0], out[...,1]])

cv2.imshow("Hue & Saturation", stacked)

cv2.waitKey(0)

cv2.destroyAllWindows()

我還将色調和飽和度通道疊加到一個圖像中,這樣我們就可以看到它的樣子,并将其顯示在螢幕上。在

我們得到這樣的圖像:

python紅色圖形識别,如何使用python opencv檢測圖像上的紅色粒子?

與圖像的其餘部分相比,相對較大的色調分量與低飽和度分量的組合是獨特的。讓我們做一些簡單的門檻值提取那些分量,我們在這些分量中查找色調分量大于一個門檻值,飽和度分量小于另一個門檻值的區域:

^{pr2}$

我設定了一些優化的門檻值,然後使用^{}将這兩個條件組合在一起。因為圖像現在是bool類型,要顯示圖像,它們應該是無符号或浮點類型,我們将圖像轉換為uint8,然後乘以255。在

我們現在得到的圖像是:

python紅色圖形識别,如何使用python opencv檢測圖像上的紅色粒子?

如您所見,我們提取出與背景不常見的紅色色調部分。門檻值也需要進行調整,但對于這個特定的例子來說,這沒什麼大不了的。在