基于肤色的人脸检测技术,opencv的调用。本科毕设
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8851 2011-05-06 13:05 轮廓检测眼睛Cpp2.cpp
文件 3462 2011-04-18 15:19 轮廓检测眼睛Cpp2.dsp
文件 533 2011-04-18 15:19 轮廓检测眼睛Cpp2.dsw
文件 41984 2011-05-08 16:57 轮廓检测眼睛Cpp2.ncb
文件 48640 2011-05-08 16:57 轮廓检测眼睛Cpp2.opt
文件 242 2011-05-08 16:55 轮廓检测眼睛Cpp2.plg
文件 196677 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.exe
文件 312560 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.ilk
文件 26558 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.obj
文件 4110284 2011-04-18 15:17 轮廓检测眼睛DebugCpp2.pch
文件 476160 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.pdb
文件 148480 2011-05-08 16:55 轮廓检测眼睛Debugvc60.idb
文件 102400 2011-05-06 13:05 轮廓检测眼睛Debugvc60.pdb
目录 0 2011-05-06 13:05 轮廓检测眼睛Debug
目录 0 2011-05-08 16:57 轮廓检测眼睛
----------- --------- ---------- ----- ----
5476831 15
/**************************************************
*基于肤色的人脸检测
*
**************************************************/
#include
#include
#include
#include
#define MAXL 1000
void histo(IplImage* pSrcImageIplImage* pDstImage);
int main( int argc char** argv )
{
int RGBi;
int count = 0 areamax[2] = {0}cut[2] = {0};
CvRect rect[2];
CvRect s_rect[MAXL];
//声明IplImage指针
IplImage* frame = NULL;
/* IplImage* pframe = NULL;
IplImage* img_8uc1 = NULL;
IplImage* cannyImage = NULL;
*/
CvCapture* pCapture = NULL;
int nFrmNum = 0;
//创建窗口
cvNamedWindow(“video“ 1);
cvNamedWindow(“gray“);
//使窗口有序排列
cvMoveWindow(“video“ 30 0);
cvMoveWindow(“gray“8000);
if( argc > 2 )
{
fprintf(stderr “Usage: bkgrd [video_file_name]
“);
return -1;
}
//打开摄像头
if (argc ==1)
if( !(pCapture = cvCaptureFromCAM(-1)))
{
fprintf(stderr “Can not open camera.
“);
return -2;
}
//打开视频文件
if(argc == 2)
if( !(pCapture = cvCaptureFromFile(argv[1])))
{
fprintf(stderr “Can not open video file %s
“ argv[1]);
return -2;
}
cvQueryframe(pCapture);
double fps = 15;
CvSize size = cvSize(
(int)cvGetCaptureProperty( pCapture CV_CAP_PROP_frame_WIDTH)
(int)cvGetCaptureProperty( pCapture CV_CAP_PROP_frame_HEIGHT)
);
CvVideoWriter* writer = cvCreateVideoWriter(
“out.avi“
CV_FOURCC(‘X‘ ‘V‘ ‘I‘ ‘D‘) fps
size
);
//逐帧读取视频
while(frame = cvQueryframe( pCapture ))
{
//声明IplImage指针
IplImage* pframe = NULL;
IplImage* img_8uc1 = NULL;
IplImage* cannyImage = NULL;
IplImage* gray = NULL;
IplImage* s_gray = NULL;
pframe = cvCloneImage(frame);
nFrmNum++;
img_8uc1 = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U1);
cannyImage = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U1);
gray = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U1);
s_gray = cvCreateImage(cvSize(frame->width frame->height) IPL_DEPTH_8U1);
pframe->origin = frame->origin;
img_8uc1->origin = frame->origin;
cannyImage->origin = frame->origin;
gray->origin = frame->origin;
s_gray->origin = frame->origin;
//直方图均衡化 可以光照补偿
histo(pframepframe);
//进行肤色点的检测
for(int y = 0; y < pframe->height; y++)
{
uchar* ptr = (uchar*)(pframe->imageData + y* pframe->widthStep );
for(int x = 0; x < pframe->width; x++)
{
B = ptr[3*x];
G = ptr[3*x + 1];
R = ptr[3*x + 2];
if(R>95 && G>40 && B>20 && R>G && R>B && max(Rmax(GB))-min(Rmin(GB))>15 && abs(R-B)>15) // 均匀日光下 肤色判断
{
ptr[3*x] = 255;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8851 2011-05-06 13:05 轮廓检测眼睛Cpp2.cpp
文件 3462 2011-04-18 15:19 轮廓检测眼睛Cpp2.dsp
文件 533 2011-04-18 15:19 轮廓检测眼睛Cpp2.dsw
文件 41984 2011-05-08 16:57 轮廓检测眼睛Cpp2.ncb
文件 48640 2011-05-08 16:57 轮廓检测眼睛Cpp2.opt
文件 242 2011-05-08 16:55 轮廓检测眼睛Cpp2.plg
文件 196677 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.exe
文件 312560 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.ilk
文件 26558 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.obj
文件 4110284 2011-04-18 15:17 轮廓检测眼睛DebugCpp2.pch
文件 476160 2011-05-06 13:05 轮廓检测眼睛DebugCpp2.pdb
文件 148480 2011-05-08 16:55 轮廓检测眼睛Debugvc60.idb
文件 102400 2011-05-06 13:05 轮廓检测眼睛Debugvc60.pdb
目录 0 2011-05-06 13:05 轮廓检测眼睛Debug
目录 0 2011-05-08 16:57 轮廓检测眼睛
----------- --------- ---------- ----- ----
5476831 15
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)