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