1. 色彩转换:
dst = cv.cvtColor(src,code)
常用的是转换成
灰度图像 cv.COLOR_BGR2GRAY
HSV图像cv.COLOR_BGR2HSV
YUV图像 cv.COLOR_BGR2YUV
YCrCb图像 cv.COLOR_BGR2YCrCb
其中hsv里:h通道数值范围是0-180,s通道范围是0-255,v通道范围是0-255
2. import cv2 as cv
import numpy as np
def extrace_object_demo():
capture = cv.VideoCapture("E:/opencv/picture/donghua.avi")
while(True):
ret,frame = capture.read()
#cv.inRange(src,阈值下限,阈值上限)
#作用:提取图像在阈值中间的部分
hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
hsv_low = np.array([100,43,46])#blue的hsv阈值
hsv_high = np.array([124, 255, 255])
mask = cv.inRange(hsv,hsv_low,hsv_high)
if ret ==False:
break
cv.imshow("mask",mask)
cv.imshow("video_window",frame)
c =cv.waitKey(20)
if c==27:
break
def color_space_demo(image):
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
cv.imshow("2",gray)
hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)
cv.imshow("3",hsv)
yuv = cv.cvtColor(image,cv.COLOR_BGR2YUV)
cv.imshow("4",yuv)
Ycrcb =cv.cvtColor(image,cv.COLOR_BGR2YCrCb)
cv.imshow("5",Ycrcb)
src = cv.imread("E:/opencv/picture/test1.jpg")
b,g,r = cv.split(src) #cv.split 多通道图像的分离
cv.imshow("b",b)
cv.imshow("g",g)
cv.imshow("r",r)
cv.namedWindow("1")
src[:,:,2] = 0
cv.imshow("1",src)
src = cv.merge([b,g,r])#cv.merge 各个通道的合并
cv.imshow("merge",src)
src[:,:,2] = 0
#color_space_demo(src)
extrace_object_demo()
cv.waitKey(0)
cv.destroyAllWindows()
总结:
1. 提取图像在阈值中间的部分,用二值化表示出来。用cv.inRange命令
cv.inRange(src,阈值下限,阈值上限)
#作用:提取图像在阈值中间的部分
例如:
hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
hsv_low = np.array([100,43,46])#blue的hsv阈值
hsv_high = np.array([124, 255, 255])
mask = cv.inRange(hsv,hsv_low,hsv_high)
2. 多通道的分离与合并:
cv.split(src) #cv.split 多通道图像的分离
例如
b,g,r = cv.split(src) #cv.split 多通道图像的分离
cv.imshow("b",b)
cv.imshow("g",g)
cv.imshow("r",r)
cv.merge([b,g,r])#cv.merge 各个通道的合并
例如:
src = cv.merge([b,g,r])#cv.merge 各个通道的合并
cv.imshow("merge",src)