一、常见色彩空间
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()