基于OpenCV 肤色检测
来源:互联网 发布:淘宝上的宝贝怎么分类 编辑:程序博客网 时间:2024/06/02 21:26
一、相关代码如下
//肤色检测
void IMG_ComplexionDetector(IplImage* img)
{
Mat imgROI(img);
Mat ROI_mask;
IplImage *img_mask = NULL;
//椭圆皮肤模型
Mat skinCrCbHist = Mat::zeros(Size(256, 256), CV_8UC1); //返回指定的大小和类型的零数组
//绘制椭圆圆弧和椭圆扇形
ellipse(skinCrCbHist, Point(113, 155.6), Size(23.4, 15.2), 43.0, 0.0, 360.0, Scalar(255, 255, 255), -1);
Mat ycrcb_image;
ROI_mask = Mat::zeros(imgROI.size(), CV_8UC1);
cvtColor(imgROI, ycrcb_image, CV_BGR2YCrCb); //首先转换成到YCrCb空间
img_mask = cvCreateImage(cvSize(IplImage(ROI_mask).width, IplImage(ROI_mask).height),\
IplImage (ROI_mask).depth, IplImage(ROI_mask).nChannels);
if(img_mask == NULL)
{
printf("img_mask == NULL error\r\n");
}
//利用椭圆皮肤模型进行皮肤检测
for(int i = 0; i < imgROI.cols; i++)
{
for(int j = 0; j < imgROI.rows; j++)
{
Vec3b ycrcb = ycrcb_image.at<Vec3b>(j, i);
if(skinCrCbHist.at<uchar>(ycrcb[1], ycrcb[2]) > 0)
{
ROI_mask.at<uchar>(j, i) = 255;
}
}
}
cvCopy(&IplImage(ROI_mask), img_mask);
//进行形态学滤波,去掉噪声
//cvErode(img_mask, img_mask, 0, 2); //腐蚀 2
//cvDilate(img_mask, img_mask, 0, 10); //膨胀 5 15
}
- 基于OpenCV 肤色检测
- 基于opencv的肤色检测
- 基于YCbCr的肤色检测OpenCV实现
- 肤色检测opencv
- OpenCV肤色检测
- OpenCV中的肤色检测
- OpenCV编程->肤色检测
- OpenCV肤色检测
- 利用OpenCV检测肤色
- OpenCV中的肤色检测
- OpenCV中的肤色检测
- 基于opencv的肤色检测,并将肤色区域用矩形框标出。
- OpenCV下肤色检测代码
- OpenCV下肤色检测代码
- OpenCV——肤色检测
- OpenCv视频图像肤色检测
- ios--OpenCV--进行肤色检测
- 【新】opencv肤色检测源码
- 奇偶位交换
- springmvc 传出参数
- log4net简易配置使用
- Android Binder ProcessState & IPCThreadState相关介绍
- 实体bean,entity 注解设置
- 基于OpenCV 肤色检测
- Windows下使用DOS卸载程序
- 网络——JSON
- 十进制转换
- 处理C++源代码的程序(3)
- windows编程中的问题集合?
- shell的特性之十:输入输出重定向和管道
- PHP连接MYSQL数据库
- android 代码 混淆- 原来如此简单