• 大小: 1.32MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-31
  • 语言: 其他
  • 标签: opencv  肤色  

资源简介

基于肤色的人脸检测技术,opencv的调用。本科毕设

资源截图

代码片段和文件信息

/**************************************************
 *基于肤色的人脸检测
 *      
 **************************************************/



#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]\n“);
      return -1;
    }

    //打开摄像头
    if (argc ==1)
       if( !(pCapture = cvCaptureFromCAM(-1)))
       {
       fprintf(stderr “Can not open camera.\n“);
       return -2;
       }

    //打开视频文件
    if(argc == 2)
       if( !(pCapture = cvCaptureFromFile(argv[1])))
   {
     fprintf(stderr “Can not open video file %s\n“ 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  轮廓检测眼睛\Debug\Cpp2.exe

     文件     312560  2011-05-06 13:05  轮廓检测眼睛\Debug\Cpp2.ilk

     文件      26558  2011-05-06 13:05  轮廓检测眼睛\Debug\Cpp2.obj

     文件    4110284  2011-04-18 15:17  轮廓检测眼睛\Debug\Cpp2.pch

     文件     476160  2011-05-06 13:05  轮廓检测眼睛\Debug\Cpp2.pdb

     文件     148480  2011-05-08 16:55  轮廓检测眼睛\Debug\vc60.idb

     文件     102400  2011-05-06 13:05  轮廓检测眼睛\Debug\vc60.pdb

     目录          0  2011-05-06 13:05  轮廓检测眼睛\Debug

     目录          0  2011-05-08 16:57  轮廓检测眼睛

----------- ---------  ---------- -----  ----

              5476831                    15


评论

共有 条评论