OpenCV之色彩空间的使用

计算机视觉,这是第二天的学习笔记(颜色空间的类型,主要是hsv(h:色调 s:饱和度 v:明度);色彩空间的转换,颜色的过滤,颜色通道的合并)

色彩空间的转换

cv.cvtColor(src,cv.COLOR_BGR2HSV)

色彩通道的分离

b,g,r=cv.split(src)

通道的合并

src=cv.merge([b,g,r])

追踪或者过滤某一种颜色

①先将每一帧视频转化成hsv
②设置最小值与最大值 通过hsv实例表进行查找
lower=np.array([h_low,s_low,v_low])
higher=np.array([h_high,s_high,v_high])
通过inRange接口进行实现 cv.inRange(hsv,lowerb=lower,upperb=higher)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#色彩空间的使用
# rgb hsv his ycrcb yuv (常见的色彩空间)
import cv2 as cv
import numpy as np
class Color_space():
def init_image(self,path):
self.src=cv.imread(path)
def close_cv(self):
cv.waitKey(0)
cv.destoryAllWindow()
#色彩空间的相互转换
def color_space_demo(self):
gray=cv.cvtColor(self.src,cv.COLOR_BGR2GRAY)
cv.imshow("gray",gray)
hsv=cv.cvtColor(self.src,cv.COLOR_BGR2HSV)
cv.imshow("hsv",hsv)
# yuv = cv.cvtColor(self, cv.COLOR_BGR2YUV)
# cv.imshow("yuv", yuv)
ycrcb = cv.cvtColor(self.src, cv.COLOR_BGR2YCrCb)
cv.imshow("ycrcb", ycrcb)
cv.waitKey(0)
cv.destroyAllWindows()
#颜色的过滤,追踪某个颜色
def extrace_object_demo(self):
capture=cv.VideoCapture("D:/download/5.mp4")
while(True):
ret,frame=capture.read()
if ret==False:
break
hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
lower=np.array([156,43,46])
higer=np.array([180,255,255])
mck=cv.inRange(hsv,lowerb=lower,upperb=higer)
cv.imshow("video",frame)
cv.imshow("mck", mck)
c=cv.waitKey(40)
if c==27:
break
#通道的合并
def image_merge(self):
b,g,r=cv.split(self.src)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
self.src=cv.merge([b,g,r])
cv.imshow("change image",self.src)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__=="__main__":
colo=Color_space()
colo.extrace_object_demo()
Fork me on GitHub