zoukankan      html  css  js  c++  java
  • 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() 

  • 相关阅读:
    array_diff()和array_diff_assoc()
    React出现错误:Uncaught TypeError: this.setState is not a function
    predis操作大全
    MacOS下出现-bash: 命令: command not found的解决方法
    OnCreateClient学习总结
    MFC之CSingleDocTemplate构造函数
    CString 的成员函数详解
    MFC 中Invalidate的使用
    CFileFind类的使用总结(转)
    MFC CSplitterWnd的用法
  • 原文地址:https://www.cnblogs.com/wqzn/p/12376732.html
Copyright © 2011-2022 走看看