python3.8+OpenCV4.1.2笔记2——色彩空间转换、色彩提取、色彩追踪、通道分离和合并

1.利用转换函数实现图像色彩空间转换。

#常见的色彩空间转换
# RGB
# HSV(H:0-180,因为0到360会出现溢出)
# HSV
    # H:0-180
    # S:0-255
    # V:0-255
# HLS:灰度和饱和度
# YCrCb:用于肤色检测
# YUV:安卓开发

# 色彩空间转换API,InRange,通道分离和合并

import cv2 as cv

def color_space_demo(image):
    gray=cv.cvtColor(image,cv.COLOR_RGB2GRAY)#RGB转化为gray
    cv.imshow("gray",gray)

    hls=cv.cvtColor(image,cv.COLOR_RGB2HLS)#RGB转化为hls
    cv.imshow("hls",hls)

    hsv = cv.cvtColor(image, cv.COLOR_RGB2HSV)  # RGB转化为hls
    cv.imshow("hsv", hsv)

    ycc = cv.cvtColor(image, cv.COLOR_RGB2YCrCb)  # RGB转化为hls
    cv.imshow("ycc", ycc)

    yuv = cv.cvtColor(image, cv.COLOR_RGB2YUV)  # RGB转化为hls
    cv.imshow("yuv", yuv)


src=cv.imread("D:/pycode/test.jpg")
cv.imshow("before",src)
color_space_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

2.将图片转化Wiehsv色彩空间,再用InRange()过滤视频中的其他颜色。实现颜色追踪。

#播放视频,InRange提取像素,追踪绿色
import cv2 as cv
import numpy as np
def extrace_object_demo():
    capture=cv.VideoCapture("D:/pycode/1.mp4")
    while(True):
        ret,frame=capture.read()
        if ret==False:
            break
        # 转成hsv色彩空间
        hsv=cv.cvtColor(frame,cv.COLOR_RGB2HSV)
        # 下面lower_hsv和upper_hsv里的数值参考hsv的表
        lower_hsv=np.array([37,43,46])
        upper_hsv=np.array([77,255,255])
        mask=cv.inRange(hsv,lower_hsv,upper_hsv)
        cv.imshow("before",frame)
        cv.imshow("after",mask)#白色的部分为绿色
        c=cv.waitKey(40)
        # if cv.waitKey(10) & 0xFF == ord('a'):  # 键盘按a退出
        #     break
        if c==27:#按esc退出
            break

extrace_object_demo()
cv.waitKey(0)
cv.destroyAllWindows()

运行结果:(注:运行结果是视频,我就截了一张图)。白色部分为绿色。


3.cv.split()通道分离和cv.merge()通道合并

import cv2 as cv

src=cv.imread("D:/pycode/test.jpg")

b,g,r=cv.split(src)#通道分离
cv.namedWindow("test",0)
cv.resizeWindow("test",450,300)
cv.namedWindow("blue",0)
cv.resizeWindow("blue",450,300)
cv.namedWindow("green",0)
cv.resizeWindow("green",450,300)
cv.namedWindow("red",0)
cv.resizeWindow("red",450,300)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)

src=cv.merge([b,g,r])#通道合并

cv.imshow("test",src)

cv.waitKey(0)
cv.destroyAllWindows()



运行结果:


 

你可能感兴趣的:(OpenCV,opencv,通道分离,通道合并,色彩空间转换)