3.色彩空間 色彩空間¶ 下麵的圖的三個點表示的是RGB,當三個通道全是0時是黑色,全是255時是白色。 常見的色彩空間 1.色彩空間轉換的API¶ cv.cvtColor(圖片,cv.COLOR_BGR2+“色彩空間”) In [4]: import cv2 as cv def color_spa ...
3.色彩空間
色彩空間¶
下麵的圖的三個點表示的是RGB,當三個通道全是0時是黑色,全是255時是白色。
常見的色彩空間
1.色彩空間轉換的API¶
- cv.cvtColor(圖片,cv.COLOR_BGR2+“色彩空間”)
import cv2 as cv def color_space_demo(img): #灰度圖 gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY) cv.imshow("gray",gray) #hsv色彩空間轉換 hsv=cv.cvtColor(img,cv.COLOR_BGR2HSV) cv.imshow("hsv",hsv) #yuv色彩空間轉換 yuv=cv.cvtColor(img,cv.COLOR_BGR2YUV) cv.imshow("yuv",yuv) print("---hello-----") src=cv.imread("aaa.png",cv.WINDOW_AUTOSIZE) cv.namedWindow("input img",0) cv.imshow("input img",src) color_space_demo(src) cv.waitKey(0) cv.destroyAllwindows()
---hello-----
2.使用inRange¶
作用:可以過濾指定的顏色,通過指定三個通道的值的範圍
In [5]:
import cv2 as cv import numpy as np #通過HSV提取視頻中的相應顏色 def extrace_object(): capture=cv.VideoCapture("./video.mp4") while True: ret,frame=capture.read() if ret==False: break hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV) lower_hsv=np.array([35,43,46]) upper_hsv=np.array([77,255,255]) mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv) #顯示 cv.imshow("video",frame) # cv.waitKey(100) #顯示篩選後的圖片,被選中的地方是白色,其他的是黑色 cv.imshow("mask",mask) c=cv.waitKey(100)#延時100ms if c==27: #esc鍵退出 break extrace_object() cv.waitKey(50) cv.destroyAllwindows()
輸出視頻如下:
3.通道的合併和分離
In [2]:import cv2 as cv print("---hello-----") src=cv.imread("aaa.png",cv.WINDOW_AUTOSIZE) x,y=src.shape[0:2] print(src.shape) cv.namedWindow("input img",0) cv.imshow("input img",src) #通道分離 b,g,r=cv.split(src) #放縮 b=cv.resize(b,(x*3,y*3)) g=cv.resize(g,(x*3,y*3)) r=cv.resize(r,(x*3,y*3)) cv.imshow("blue",b) cv.imshow("green",g) cv.imshow("red",r) #通道分離 src[:,:,1]=0#指定第2個通道全部為0 src=cv.merge([b,g,r]) cv.imshow("change image",src) cv.waitKey(0) cv.destroyAllWindows()
---hello----- (96, 89, 3)
分離後:原圖和3個通道的圖
合併後:原圖和修改後的圖的區別