一、色彩空间的简介:
参见博客:https://blog.csdn.net/Solomon1558/article/details/43772147(讲的很详细)
二、色彩空间的的转换(RGB转换为其他色彩空间):
1. RGB色彩空间转换为HSV色彩空间:(转换方法参见一中提到的博客(三)HSI颜色空间)
hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
cv.imshow("hsv", hsv)
2. RGB色彩空间转换为YUV色彩空间:(转换方法参见一中提到的博客(三)HSI颜色空间)
yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
cv.imshow("yuv", yuv)
3. RGB色彩空间转换为YCrCb色彩空间:(转换方法参见一中提到的博客(三)HSI颜色空间)
ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
cv.imshow("ycrcb", ycrcb)
三、RCB色彩空间的通道分解合并操作:
1.通道分解(就是讲R,G,B三个通道的颜色值单独拿出来)(图像顺序为R,G,B):
# 通道分解
B,G,R = cv.split(src)
cv.imshow("blue", B)
cv.imshow("green", G)
cv.imshow("red", R)
2.通道合成:
# 通道合并
src = cv.merge([B,G,R])
四、视屏文件的存储:
1.直接上代码了,里面有注释:
def videa_demo():
capture = cv.VideoCapture(0)
ret, frame = capture.read()
# 调用cv2方法获取cap的视频帧(帧:每秒多少张图片)
fps = capture.get(cv.CAP_PROP_FPS)
print(fps)
# 获取cap视频流的每帧大小
size = (int(capture.get(cv.CAP_PROP_FRAME_WIDTH)),
int(capture.get(cv.CAP_PROP_FRAME_HEIGHT)))
print(size)
# 定义编码格式为mpge-4,其他编码参见博客
# https://blog.csdn.net/qq_30622831/article/details/82082122
fourcc = cv.VideoWriter_fourcc(*'XVID')
print(fourcc)
# 定义视频文件输入对象
outVideo = cv.VideoWriter("xiaofeng_1.avi", fourcc, fps, size)
while(ret):
frame = cv.flip(frame,1)
if ret == False:
break
hsv = cv.cvtColor(frame, cv.COLOR_BGR2HSV)
'''
找出每帧图片中的红色
'''
# 红色的HSV值
law_hsv = np.array([0|156,43,46])
upper_hsv = np.array([10|180,255,255])
# 二值化
mask = cv.inRange(hsv, lowerb=law_hsv, upperb=upper_hsv)
# 只还原出颜色,做与操作
dst = cv.bitwise_and(frame,frame,mask=mask)
cv.imshow("video", frame)
cv.imshow("mask", dst)
# 将每帧图片存储
outVideo.write(dst)
c = cv.waitKey(10)
if c == 27:
break
ret, frame = capture.read()
1.HSV色表:
好啦,就这些,正在学习的菜鸟,有不对的地方请大鸟支出(哈哈),还有补习勿喷哦