导包:import cv2 as cv
色彩空间转换
- 转换
def color_space_demo(image):
gray=cv.cvtColor(image,cv.COLOR_BGR2GRAY)#灰色GRAY
cv.imshow("gray",gray)
hsv=cv.cvtColor(image,cv.COLOR_BGR2HSV)#HSV
cv.imshow("hsv",hsv)
yuv=cv.cvtColor(image,cv.COLOR_BGR2YUV)#YUV
cv.imshow("yuv",yuv)
ycrcb=cv.cvtColor(image,cv.COLOR_BGR2YCrCb)#YCRCB
cv.imshow("ycrcb",ycrcb)
- 读取一张图片
src=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
#调用
color_space_demo(src)
#必须存在的
cv.waitKey(0)
cv.destroyAllWindows()
视频转换成HSV颜色的
HSV颜色表
#对视频色彩进行转换
def extrace_object_demo():
capture=cv.VideoCapture('C:/Users/admin/Pictures/sp/ge1.mp4')#读取视频路径
while (True):
ret,frame=capture.read()#读取视频
if ret==False:
break;
hsv=cv.cvtColor(frame,cv.COLOR_BGR2HSV)#定义hsv颜色通道
lower_hsv=np.array([0,0,0])#设置hmin、smin、vmin值属性
upper_hsv=np.array([180,255,46])#设置hmax、smin、vmax值属性
#inRange()函数就是判断hsv中每一个像素是否在[lowerb,upperb]之间,注意集合的开闭。
mask=cv.inRange(hsv,lowerb=lower_hsv,upperb=upper_hsv)
#显示
cv.imshow("video",frame)
cv.imshow("video",mask)
#不断刷新图像
c=cv.waitKey(40)
if c==27:
break
图片色彩分割
src=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)#原图显示
#显示分割bgr图片的颜色
b,g,r=cv.split(src)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
src=cv.merge([b,g,r])#三个通道合并起来
#显示新通道
cv.imshow("sange image",src)
srce=cv.imread("C:/Users/admin/Pictures/zyl/Tes1.jpg")
srce[:,:,2]=0#单独合并一个通道
cv.imshow("dandu image",srce)
cv.imshow("dandu image",srce)