色彩空间转换

import cv2 as cv
import numpy as np

# 色彩空间转换
def color_space_demo(image):
    # RGB转换为gray
    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)

# 提取目标特征
def estract_object_demo():
    #导入视频,这还可以提取视频的帧数么
    capture = cv.VideoCapture('pic/1.mp4')
    while True:
        #ret返回true和false 如果返回的frame帧有值,则ret返回ture
        ret,frame = capture.read()
        if ret == False:
            break
        #转换色彩空间为hsv
        hsv = cv.cvtColor(frame,cv.COLOR_BAYER_BG2BGR)
        # 设置绿色的范围,跟踪视频中的绿色
        lower_hsv = np.array([35,43,46])#设置过滤的颜色的低值
        upeper_hsv = np.array([77,255,255])# 设置过滤颜色的高值
        # 经过滤之后得到的mask是二值图像
        mask = cv.inRange(hsv,lower_hsv,upeper_hsv)#调节图像颜色信息(H)、饱和度(S)、亮度(V)区间,选择白色区域
        cv.imshow('vedio',frame)
        cv.imshow('mask',mask)
        if cv.waitKey(50) & 0xFF == ord('q'):
            break

if __name__ == '__main__':
    '''
    调用color_space_demo()函数  色彩空间转换
    '''
    # src = cv.imread('pic/bizhi.jpg') # 读取到的是RGB图像
    # cv.namedWindow('original',cv.WINDOW_NORMAL)
    # cv.imshow('original',src)
    # color_space_demo(src)
    # cv.waitKey(0)
    # cv.destroyAllWindows()

    '''
    调用estract_object_demo()函数   提取目标特征
    '''
    # estract_object_demo() # 我并没有放视频文件
    # cv.waitKey(0)
    # cv.destroyAllWindows()
    '''
    通道分离、合并及修改  
    '''
    src = cv.imread('pic/bizhi.jpg')
    # 下面这句不知道干嘛的
    cv.namedWindow('original',cv.WINDOW_NORMAL)
    cv.imshow('original',src)
    # cv.waitKey(0) # 不加这句打开一闪而过

    # # 通道分离,输出三个单通道图片
    b,g,r = cv.split(src) # 将色彩图像分割成3个通道
    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_channel',src)

    cv.waitKey(0)
    cv.destroyAllWindows()

posted @ 2021-08-12 20:04  索匣  阅读(77)  评论(0编辑  收藏  举报