基于opencv的皮肤检测

简介:

一个超精准的肤色检测!!

修改自opencv的adaptiveskindetector.cpp,去掉了复杂的命令行参数输入,只需要一个网络摄像头即可运行。

原理方面大致看了下,主要还是利用HSV空间的色调信息。

效果还可以,但似乎对于白色,尤其是乳白色的墙壁,壁板等检测效果较差。

这是在这里公布的第一个小东西,尽量一周更新一个,基本都会附带源代码(C++, VS2008)

 

复制代码
 
    
/* ********************************************************************** */
/* adaptive skin detection
modified from opencv's adaptiveskindetector.cpp
opencv2.0 is required
welcome to visit my website:
http://yangyangwenjia.appspot.com/
*/
/* ********************************************************************** */
#include
< iostream >
#include
< cstdio >
#include
< cstring >
#include
< ctime >
#include
< cvaux.h >
#include
< highgui.h >

int main( int argc, char ** argv )
{
CvAdaptiveSkinDetector filter(
1 , CvAdaptiveSkinDetector::MORPHING_METHOD_ERODE_DILATE);

int camWidth = 640 ;
int camHeight = 480 ;

IplImage
* maskImg = cvCreateImage( cvSize(camWidth, camHeight), IPL_DEPTH_8U, 1 );
IplImage
* skinImg = cvCreateImage( cvSize(camWidth, camHeight), IPL_DEPTH_8U, 3 );

cvNamedWindow(
" skin " , CV_WINDOW_AUTOSIZE);
cvNamedWindow(
" source " , CV_WINDOW_AUTOSIZE);

CvCapture
* capture = cvCaptureFromCAM( 0 );
IplImage
* frame = 0 ;

for (;;)
{
cvZero(skinImg);

frame
= cvQueryFrame( capture );
if ( ! frame )
break ;

filter.process(frame, maskImg);
// process the frame
cvCopy(frame,skinImg,maskImg);

cvShowImage (
" skin " , skinImg);
cvShowImage (
" source " , frame);
if (cvWaitKey( 1 ) == 27 )
break ;

}

cvReleaseImage(
& skinImg);
cvReleaseImage(
& maskImg);
cvReleaseCapture(
& capture );

cvDestroyWindow(
" skin " );
cvDestroyWindow(
" source " );

return 0 ;
}

基于opencv的皮肤检测



相关文章
|
1月前
|
Java Android开发 计算机视觉
报错opencv2:compileDebugJavaWithJavac
报错opencv2:compileDebugJavaWithJavac
16 0
|
6月前
|
计算机视觉 Python
openCV之仿射
openCV之仿射
22 0
|
6月前
|
文字识别 计算机视觉
OpenCV演示程序 汇总
OpenCV演示程序 汇总
|
7月前
|
机器学习/深度学习 人工智能 算法
opencv
OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,它包含了许多图像处理、视频分析和计算机视觉方面的功能。OpenCV 的目的是为人工智能、
126 0
|
7月前
|
计算机视觉
opencv遇到问题总结一
opencv遇到问题总结一
34 0
|
9月前
|
存储 编解码 算法
09 OpenCV图形检测
cv2.findContours() 函数是OpenCV中用于寻找轮廓的函数之一。它可以用于在二值图像中查找并检测出所有的物体轮廓,以及计算出这些轮廓的各种属性,例如面积、周长、质心等。
|
10月前
|
机器学习/深度学习 监控 算法
opencv
OpenCV是一个开源的计算机视觉库,可以用于图像处理、计算机视觉和机器学习等领域。OpenCV最初由Intel公司开发,后来在开放源代码许可证下发布,目前已经成为了计算机视觉领域最受欢迎的开源库之一。
279 0
|
算法 Java Android开发
OpenCV的获取和安装
OpenCV的获取和安装
303 0
OpenCV的获取和安装
|
计算机视觉
opencv初识
opencv初识
85 0
|
安全 机器人 Java
OpenCV初步了解
OpenCV是一个用于图像处理、分析、机器视觉方面的开源函数库.
192 1
OpenCV初步了解