1. 程式人生 > 程式設計 >Python-opencv實現紅綠兩色識別操作

Python-opencv實現紅綠兩色識別操作

1.顏色空間轉換(RGB轉HSV)

為了較準確的調紅色和綠色的HSV,我使用cv2.createTrackbar()函式建立了六個滾動條

#建立HSV最低滾動條
cv2.createTrackbar('H_min','image',35,180,nothing)
cv2.createTrackbar('S_min',43,255,nothing)
cv2.createTrackbar('V_min',46,nothing)

#建立HSV最高滾動條
cv2.createTrackbar('H_max',nothing)
cv2.createTrackbar('S_max',nothing)
cv2.createTrackbar('V_max',nothing)

Python-opencv實現紅綠兩色識別操作

實際效果如圖

Python-opencv實現紅綠兩色識別操作

Python-opencv實現紅綠兩色識別操作

2.識別顏色並畫矩形框

顏色閾值已經確定了,這就可以進行顏色識別了。

為了讓識別更穩定,在程式碼中加入自適應閾值。

th_img = cv2.adaptiveThreshold(mask,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,5,2)

3.畫矩形框

使用函式cv2.findContours()來檢測物體輪框

再使用函式cv2.boundingRect()查詢最小矩形框

使用函式cv2.rectangle()畫出

contours_green,hierarchy = cv2.findContours(th_green,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
contours_red,hierarchy = cv2.findContours(th_red,cv2.CHAIN_APPROX_SIMPLE)
for red in contours_red:
 x_red,y_red,w_red,h_red = cv2.boundingRect(red)
 if w_red>width|h_red>height:
 cv2.rectangle(img,(x_red,y_red),((x_red+h_red),(y_red+w_red)),(0,0),1)
for red in contours_red:
 x_red,1)

為了凸顯出顏色的差距,我使用綠色的矩形框,畫紅色的物體,用紅色的矩形框畫綠色物體

Python-opencv實現紅綠兩色識別操作

以上這篇Python-opencv實現紅綠兩色識別操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。