一、程序说明
二、结果展示(视频和图标展示)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、程序说明
1、首先是肤色检测,常用的HSV和YCrCb两种,从效果上看反馈来说是YCrCb比较好的。本文是使用opencv中自带的函数的cvtColor进行颜色空间转换的,在提取其中的一个通道,如下代码
void skin(Mat src)
{
src.convertTo(src,CV_8UC3,255);
Mat yuv,dst;
cvtColor(src,yuv,CV_BGR2YCrCb);
Mat dstTemp1(src.rows, src.cols, CV_8UC1);
Mat dstTemp2(src.rows, src.cols, CV_8UC1);
// 对YUV空间进行量化,得到2值图像,亮的部分为手的形状
inRange(yuv, Scalar(0,133,0), Scalar(256,173,256), dstTemp1);
2、手掌的轮廓,采用的是背景差分法,这个比较简单,改天将此算法进行单独的展示分析。
inRange(yuv, Scalar(0,0,77), Scalar(256,256,127), dstTemp2);
bitwise_and(dstTemp1, dstTemp2, mask);</