python环境使用YCbCr掩码方式实现肤色检测

 时间:2024-10-24 09:03:30

1、利用YCbCr色度空间的特点,使用CbCr两种色度进行控制得到一个掩码矩阵,然后让源图和Mask进行与运算,从而得到我们想要的效果。还是来一张源图以及头文件import 艘早祓胂cv2 as cvimport numpy as npimage = cv.imread('c:\\handtest.jpg', cv.IMREAD_COLOR)cv.imshow("image", image)

python环境使用YCbCr掩码方式实现肤色检测

2、# 把图像转换到YCBCRYCrCb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)cv.imshow("YCrCb", YCrCb)

python环境使用YCbCr掩码方式实现肤色检测

3、(Y, Cr, Cb) = cv.split(YCrCb)cv.imshow("Y", Y)cv.imshow("Cr", Cr)cv.imshow("Cb", Cb)

python环境使用YCbCr掩码方式实现肤色检测
python环境使用YCbCr掩码方式实现肤色检测
python环境使用YCbCr掩码方式实现肤色检测

4、# 高斯滤波Cr Cb分别进行GaussianBlurCr = cv.GaussianBlur(Cr荑樊综鲶, (5, 5), 0)GaussianBlurCb = cv.GaussianBlur(Cb, (5, 5), 0)maskNew = np.zeros(Cr.shape,dtype= np.uint8)构造Mask(x,y)= Cr.shapeprint(x,y)得到:x = 425y = 600

python环境使用YCbCr掩码方式实现肤色检测
python环境使用YCbCr掩码方式实现肤色检测

5、for i i艘绒庳焰n range(0,x): for j in range(0,y): if (GaussianBlurCr[i][j]>140) and (GaussianBlurCr[i][j]<175) and (GaussianBlurCb[i][j]>80) and (GaussianBlurCb[i][j]<140): maskNew[i][j]= 255 else: maskNew[i][j] = 0选择Cr 140-175 为255Cb 80-140 为0 这是肤色经验值。 变成二值图 Mask

python环境使用YCbCr掩码方式实现肤色检测

6、bitwise_andImage = cv.bitwise_and(image, image, mask=maskNew)原图和二值掩码与运算!cv.imshow("bitwise_andImage", bitwise_andImage )cv.waitKey(0)cv.destroyAllWindows()其结果和阈值法差不多

python环境使用YCbCr掩码方式实现肤色检测
  • 如何让matlab命令行窗口间隔1s输出时间?
  • Matlab中如何查看绘制函数曲线各个数据点的坐标
  • LaTex排版技巧:[5]如何输入矩阵?
  • matlab在同一窗口关于多个子图的绘制
  • 如何在matlab中绘图并更改曲线颜色
  • 热门搜索
    溺水手抄报简单又漂亮 小学一年级手抄报 畅想2035年手抄报内容 新学期手抄报图片大全 抗击病毒的手抄报 手抄报版面设计 禁毒手抄报内容资料 普通话的手抄报 课外阅读手抄报 爱国主义教育手抄报