import cv2 as cv
import numpy as np
def extrace_object_demo():
capture = cv.VideoCapture(0)
while(True):
ret,frame = capture.read()
if ret == False:
break
hsv = cv.cvtColor(frame,cv.COLOR_BGR2HSV)
# lower_hsv = np.array([37,43,46])
# upper_hsv = np.array([77,255,255])
lower_hsv = np.array([0, 0, 46]) # 灰色这个颜色分别在三个通道范围的最低值
upper_hsv = np.array([180, 43, 220]) # 灰色这个颜色在三个通道范围的最高值
mask = cv.inRange(hsv,lowerb = lower_hsv,upperb = upper_hsv)
cv.imshow("video",frame)
cv.imshow("mask",mask)
c = cv.waitKey(40)
if c == 27:
break
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)
src = cv.imread(r"C:\pics\beay.png")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
b, g, r = cv.split(src) #通道分离
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
src[:, :, 2] = 0 #通道合并
src = cv.merge([b,g,r])
cv.imshow("changed image",src)
#extrace_object_demo()
#color_space_demo(src)
cv.waitKey(0)
cv.destoryAllWindows()
cv.split()函数与src[:, :, 0] = 0有区别,前者是分离通道并转换为了一个灰度图像(即像素只由一个数值表达),而后者仍然是三通道RGB图像,只不过表示像素值的三个数某个数被改变(因此仍然是彩色图像)。
HSV 色彩空间分布