• 图片的色彩空间转换、简单色彩跟踪与通道分离、合并(三)


    一 图片的色彩空间转换

    • 灰度色彩空间

      单通道,取值范围[0,255] 0黑255白

    • RGB色彩空间(opencv中习惯用BGR)

      opencv中R,G,B三通道取值范围均为[0,255]。

     

    • HSV/HSL色彩空间

         H:0-180  S: 0-255 V: 0-255

      HSV是一种将RGB色彩空间中的点在倒圆锥体中的表示方法。HSV即色相(Hue)、饱和度(Saturation)、明度(Value),又称HSB(B即Brightness)。色相是色彩的基本属性,就是平常说的颜色的名称,如红色、黄色等。饱和度(S)是指色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。明度(V),取0-max(计算机中HSV取值范围和存储的长度有关)。HSV颜色空间可以用一个圆锥空间模型来描述。圆锥的顶点处,V=0,H和S无定义,代表黑色。圆锥的顶面中心处V=max,S=0,H无定义,代表白色。

    1 代码

    import cv2 as cv
    
    #色彩空间的转换
    def color_space_demo(image):
        gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)
        cv.imshow('gray',gray)
        hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)
        cv.imshow('hsv',hsv)
        yuv=cv.cvtColor(image,cv.COLOR_BGR2YUV)
        cv.imshow('hsv',yuv)
    
    src=cv.imread('./yiner.jpg')
    cv.namedWindow('before',cv.WINDOW_NORMAL)
    cv.imshow('before',src)
    
    color_space_demo(src)
    cv.waitKey(0)
    cv.destroyAllWindows()

    二:色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪某一颜色

    代码

    #色彩空间转换,利用inrange函数过滤视频中的颜色,实现跟踪颜色
    import cv2 as cv
    import numpy as np
    
    def catch_pen():
        capture=cv.VideoCapture('./1.mp4')#导入文件
    
        while True:
            ret,frame=capture.read()
            if ret==False:
                break
            #色彩空间转换到HSV
            hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)
            # 设置黑色的范围,跟踪视频中的黑色
            lower_hsv=np.array([0,0,0]) #设置过滤的颜色的低值
            upper_hsv=np.array([180,255,46])#设置过滤的颜色的高值
            # 调节图像颜色信息(H)、饱和度(S)、亮度(V)区间,选择黑色区域
            mask=cv.inRange(hsv,lower_hsv,upper_hsv)
            cv.imshow('video',frame)
            cv.imshow('mask',mask)
            if cv.waitKey(50)&0xFF==ord('q'):
                break
    
    catch_pen()
    cv.waitKey()
    cv.destroyAllWindows()

    HSV  lower_hsv和uppe_hsv查询表

    三 通道分离、合并,修改某一通道

    通道分离:split() 将彩色图像分割为3个通道

    合并:merge()

    import cv2 as cv
    import numpy as np
    
    src=cv.imread('hua.jpg')
    cv.namedWindow('before',cv.WINDOW_NORMAL)
    cv.imshow('before',src)
    
    #通道分离
    b,g,r=cv.split(src)
    cv.imshow('blue',b)
    cv.imshow('green',g)
    cv.imshow('red',r)
    
    #通道合并
    src=cv.merge([b,g,r])
    cv.imshow('merge',src)
    
    # 修改某个通道
    src[:,:,2]=100
    cv.imshow('single',src)
    
    cv.waitKey(0)
    cv.destroyAllWindows()

    效果展示

  • 相关阅读:
    城市承灾体脆弱性和易损性的影响因素
    《风暴潮、海浪、海啸和海冰灾害应急预案》
    承灾体
    ArcGIS数据存储的方式
    ArcGIS几种数据格式2
    ArcGIS几种数据格式
    【ArcGIS】文件地理数据库,个人地理数据库与ArcSDE的局别
    dojo事件绑定
    Spark最简安装
    Spark 概述
  • 原文地址:https://www.cnblogs.com/angle6-liu/p/10651757.html
Copyright © 2020-2023  润新知