3.色彩空间

 

色彩空间

下面的图的三个点表示的是RGB,当三个通道全是0时是黑色,全是255时是白色。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

3.色彩空间 Python 第1张

 

 

 

常见的色彩空间

3.色彩空间 Python 第2张

 

 

 

1.色彩空间转换的API

  • cv.cvtColor(图片,cv.COLOR_BGR2+“色彩空间”)
In [4]:
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----- 
                 3.色彩空间 Python 第3张

 

 

 

 

2.使用inRange

作用:可以过滤指定的颜色,通过指定三个通道的值的范围 3.色彩空间 Python 第4张

 

 

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.色彩空间 Python 第5张

 

 

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个通道的图

3.色彩空间 Python 第6张

 

 

 

合并后:原图和修改后的图的区别

3.色彩空间 Python 第7张

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄