• 3.色彩空间


    3.色彩空间

     

    色彩空间

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

     

    常见的色彩空间

     

    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----- 
    
                    
     

    2.使用inRange

    作用:可以过滤指定的颜色,通过指定三个通道的值的范围

    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.通道的合并和分离

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

     

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

  • 相关阅读:
    [SDOI2009]生日礼物(单调队列)
    [luogu1638]逛画展(单调队列)
    【最短路】·SPFA算法实现
    [UVA10474]大理石在哪儿
    【转载】C++中string erase函数的使用
    【转载】高精度减法的OP写法
    【转载】ST表
    串门赛: NOIP2016模拟赛——By Marvolo 丢脸记
    Bzoj 3813 奇数国 题解 数论+线段树+状压
    Bzoj 2064 分裂 题解
  • 原文地址:https://www.cnblogs.com/AI-robort/p/13377830.html
Copyright © 2020-2023  润新知