Open_CV 色彩空间

Posted wqzn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Open_CV 色彩空间相关的知识,希望对你有一定的参考价值。

色彩空间:

颜色空间按照基本结构可以分两大类:基色颜色空间 和 色、亮分离颜色空间。前者的典型是 RGB,还包括 CMY、CMYK、CIE XYZ 等;后者包括 YCC/YUV、Lab、以及一批“色相类颜色空间”。CIE XYZ 是定义一切颜色空间的基准,很奇妙的是,它即属于基色颜色空间,也属于色、亮分离颜色空间,是贯穿两者的枢纽。色、亮分离颜色空间中的子类型“色相类颜色空间”,是把颜色分成一个表亮属性,和两个表色属性,其中有一个表色属性是色相,而色相以外的两个属性可以选用不同的变量来定义,而色相的概念不变,因此就构成一族共同使用色相属性,另加表亮属性和表色属性各一个组成的颜色空间,它们是颜色空间中的一个家族,暂且统称为 HSB 颜色空间。

RGB和CMY颜色模型都是面向硬件的,而HSV(HueSaturation Value)颜色模型是面向用户的。
补充:
色光三原色 RGB:吸收俩种,反射自身颜色;在屏幕上显示的图像,就是RGB模式表现的
色料三原色CMY:反射两种,吸收一种颜色;在印刷品上看到的图像,就是CMYK模式表现的
较为详细的笔记:参考以下链接

https://blog.csdn.net/ABigDeal/article/details/84836269

色彩空间转换:

import cv2 as cv

src = cv.imread("./01.jpg")
def color_space(image):  #色彩空间转换API
    """
    将RGB的图像转换成其他类型
    :param image:
    :return:
    """
    gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
    cv.imshow("gray",gray)
    hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)   # h 0-180 s 0-255 v 0-255
    cv.imshow("hsv",hsv)
    yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV)
    cv.imshow("yuv",yuv)
    ycrcb = cv.cvtColor(image,cv.COLOR_BGR2YCrCb)
    cv.imshow("ycrcb",ycrcb)
 

 技术图片

 

inRange

def extrace_object():
    """
    capture: 视频文件对象
    ret: 返回结果,True为视频还存在,False表示视频读取完成了
    frame: 帧数
    :return:
    """

    capture = cv.VideoCapture("./wqz.mp4")
    while 1:
        ret , frame = capture.read()
        if ret == False:
            break
        hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
        lower_hsv = np.array([100,43,46])
        upper_hsv = np.array([124,255,255])
        mask = cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv) #过滤出蓝色
        cv.imshow("video",frame)
        cv.imshow("mask",mask)
        c = cv.waitKey(40)
        if c == 27:
            break

 效果:

 技术图片

 

 通道分离:

src = cv.imread("./01.jpg")
cv.imshow("input_img",src)
r , g , b = cv.split(src)  #通道分离
cv.imshow("red",r)
cv.imshow("green",g)
cv.imshow("blue",b)

技术图片

 

 通道合并:

src = cv.imread("./01.jpg")
cv.imshow("input_img",src)
r , g , b = cv.split(src)  #通道分离
src = cv.merge([r,g,b]) #通道合并
cv.imshow(",merge",src)
cv.waitKey(0)
cv.destroyAllWindows() 

技术图片

 

以上是关于Open_CV 色彩空间的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV实战——OpenCV色彩空间转换

OpenCV之色彩空间与色彩空间转换

OpenCV高手勿入! 半小时学会基本操作 6 色彩空间

OpenCV图像处理基本操作 Open_CV系列

OPEN_CV 错误没有足够的值来解包(预期 3,得到 2)[重复]

OpenCV像素处理基本操作 Open_CV系列