OpenCV練習:嘗試同時提取多個不同的顏色物體,比如同時提取紅,藍,綠三個不同顏色的物體。
阿新 • • 發佈:2018-12-17
python:
1.先是通過
import cv2 import numpy as np red = np.uint8([[[255,0,0]]]) hsv_red=cv2.cvtColor(red,cv2.COLOR_BGR2HSV) print hsv_red green=np.uint8([[[0,255,0]]]) hsv_green=cv2.cvtColor(green,cv2.COLOR_BGR2HSV) print hsv_green blue = np.uint8([[[0,0,255]]]) hsv_blue=cv2.cvtColor(blue,cv2.COLOR_BGR2HSV) print hsv_blue
得出紅綠藍的HSV值。結果是:
注意此時的值是在OpenCV的條件下得出,則預設是使用BGR的順序。
2.通過程式碼實現同時提取紅,藍,綠三個不同顏 色的物體的功能。
#coding=utf-8</code> import cv2 import numpy as np cap=cv2.VideoCapture(0) while(1): # 獲取每一幀 ret,frame=cap.read() # 轉換到 HSV hsv=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV) # 設定閾值,注意這裡使用的numpy所以回到了RGB的順序,之前在BGR狀態下閾值是0-120,故現在是60-180 lower_blue=np.array([60,100,100]) upper_blue=np.array([180,255,255]) # 根據閾值構建掩模 mask=cv2.inRange(hsv,lower_blue,upper_blue) # 對原影象和掩模進行位運算 res=cv2.bitwise_and(frame,frame,mask=mask) # 顯示影象 cv2.imshow('frame',frame) cv2.imshow('mask',mask) cv2.imshow('res',res) k=cv2.waitKey(5)&0xFF if k==27: break # 關閉視窗 cv2.destroyAllWindows()
實現結果: