目錄:
(一)調用轉換函數實現圖像色彩空間轉換------ cv2.cvtColor函數
(二)色彩空間轉換,利用inrange函數過濾視頻中的顏色,實現跟蹤某一顏色
正文:
(一)調用轉換函數實現圖像色彩空間轉換------ cv2.cvtColor函數
cvtColor(src,code,dst=None,dstCn=None),作用:將一幅圖像從一個色彩空間轉換到另一個色彩,空間參數:code,轉換的色彩空間。
BGR---》GRAY,BGR---》HSV,BGR---》YUV,BGR--》YCrCb
1 # 色彩空間轉換 2 def color_space_demo(img): 3 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 4 cv2.imshow("gray", gray) 5 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) 6 cv2.imshow("hsv", hsv) 7 yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV) 8 cv2.imshow("yuv", yuv) 9 ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) 10 cv2.imshow("ycrcb", ycrcb)
HSV色彩空間說明: H:0-180 S: 0-255 V: 0-255
(二)色彩空間轉換,利用inrange函數過濾視頻中的顏色,實現跟蹤某一顏色
利用cv2.inRange函數設閾值,這里注意用的顏色空間是hsv。HSV:HSV顏色空間是孟塞爾彩色空間的簡化形式,是一種基於感知的顏色模型。它將彩色信號分為3種屬性:色調(Hue,H),飽和度(Saturation,S),亮度(Value,V)。色調表示從一個物體反射過來的或透過物體的光波長,也就是說,色調是由顏色的名稱來辨別的,如紅、黃、藍;亮度是顏色的明暗程度;飽和度是顏色的深淺,如深紅、淺紅。
HSV顏色空間反映了人觀察色彩的方式,具有兩個顯著的特點:
- 亮度分量與圖像的彩色信息無關
- “色調”和“飽和度”分量與人感受顏色的方式是緊密相連的
可以根據右表來確定lower_hsv, upper_hsv的取值。
1 # -*- coding=GBK -*- 2 import cv2 as cv 3 import numpy as np 4 5 6 def nextrace_object_demo(): 7 capture = cv.VideoCapture("G:/1.mp4")#導入視頻 8 while True: 9 ret, frame = capture.read() 10 if ret == False: 11 break 12 hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)#轉換色彩空間為hsv 13 #設置白色的范圍,跟蹤視頻中的白色 14 lower_hsv = np.array([0, 0, 221])#設置過濾的顏色的低值 15 upper_hsv = np.array([180, 30, 255])#設置過濾的顏色的高值 16 mask = cv.inRange(hsv, lower_hsv, upper_hsv)#調節圖像顏色信息(H)、飽和度(S)、亮度(V)區間,選擇白色區域 17 cv.imshow("video", frame) 18 cv.imshow("mask", mask) 19 if cv.waitKey(50) & 0xFF == ord('q'): 20 break 21 22 nextrace_object_demo() 23 cv.waitKey(0) 24 cv.destroyAllWindows()、
參考:
https://blog.csdn.net/u011321546/article/details/79533669
https://blog.csdn.net/Vici__/article/details/100714822#12%E3%80%81%E5%BD%A9%E8%89%B2%E7%A9%BA%E9%97%B4%E8%BD%AC%E6%8D%A2