基于OpenCv的(YCrCb)颜色空间的肤色检测

该博客介绍了如何使用OpenCV在YCrCb颜色空间进行肤色检测。通过转换摄像头捕获的图像到YCrCb空间,然后分割通道并设定阈值,可以实现对肤色的有效识别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                  基于OpenCv的(YCrCb)颜色空间的肤色检测

    摘要:颜色空间分为RGB,HSV,YUV等,此次主要是以YCrCb颜色空间的肤色检测。利用YUV主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视的特点,将摄像头捕捉到的图像转换成黑白图像(即皮肤颜色为白色以外,其他颜色为黑色)。


   关键词:

   YUV空间:               

<
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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值