Python OpenCV(三)色彩空间

一、常见色彩空间

1、灰度色彩空间是通过去除彩色信息来将其转换成灰阶,灰度色彩空间对中间处理特别有效,比如人脸检测。

2、BGR,即蓝-绿-红色彩空间,每一个像素点都由一个三元数组来表示,分别代表蓝、绿、红三种颜色。另一个与之相似的颜色空间:RGB,它们只是在颜色的顺序上不同。

3、HSV,也称六角锥体模型,颜色的参数分别是:色调(H),饱和度(S),明度(V)。

4、HIS,颜色的参数分别是:色调(H),亮度(I),饱和度(S)。

5、YUV,颜色的参数分别是:明亮度(Y),“U”和“V”表示色度。

6、YCrCb,即YUV,Cr和Cb表示色度。

二、BGR转换成其他色彩空间

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("yuv",yuv)

    ycrcb = cv.cvtColor(image,cv.COLOR_BGR2YCrCb)

    cv.imshow("ycrcb",ycrcb)

img = cv.imread("D:/temp/img/longnv.jpg")

color_space_demo(img)

cv.waitKey(0)

cv.destroyAllWindows()

三、从视频文件中过滤某种颜色

import cv2 as cv

import  numpy as np

def extract_obj():

    cap = cv.VideoCapture("D:/temp/video/test12.mp4")

    while 1:

        ret,frame = cap.read()

        if ret ==False:

            break

        # 把视频中的黑色过滤出来

        hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)

        lower_hsv = np.array([0,0,0])

        upper_hsv = np.array([180,255,46])

        mask = cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv)

        cv.imshow("video",frame)

        cv.imshow("mask",mask)

        if cv.waitKey(24)==30:

            break

extract_obj()

cv.waitKey(0)

cv.destroyAllWindows()

四、通道的分离与合并

import cv2as cv

import  numpyas np

img = cv.imread("D:/temp/img/f1.jpg")

#通道分离

b,g,r = cv.split(img)

cv.imshow("blue",b)

cv.imshow("green",g)

cv.imshow("red",r)

#通道合并

img2 = cv.merge([b,g,r])

img2[:,:,0]=0

cv.imshow("img2",img2)

cv.waitKey(0)

cv.destroyAllWindows()

你可能感兴趣的:(Python OpenCV(三)色彩空间)