Face.h
上传用户:xiaoge123
上传日期:2022-08-05
资源大小:5794k
文件大小:3k
源码类别:

OpenCV

开发平台:

Visual C++

  1. #include "cv.h"
  2. #include "highgui.h"
  3. #include "cxcore.h"
  4. #include "stdafx.h" 
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <string.h>
  8. #include <assert.h>
  9. #include <math.h>
  10. #include <float.h>
  11. #include <limits.h>
  12. #include <time.h>
  13. #include <ctype.h>
  14. #define DEFAULT_CASCADE_NAME "C:\Program Files\OpenCV\data\haarcascades\haarcascade_frontalface_alt2.xml"
  15. #ifdef _EiC
  16. #define WIN32
  17. #endif
  18. //int detect_and_draw( IplImage* image ,CvHaarClassifierCascade* cascade);
  19. static CvMemStorage* storage = 0;
  20. static CvHaarClassifierCascade* cascade = 0;
  21. //static CvHaarClassifierCascade* cascade =  (CvHaarClassifierCascade*)cvLoad ( DEFAULT_CASCADE_NAME, 0, 0, 0 );
  22. //void detect_and_draw( IplImage* image );
  23. const char* cascade_name ="../debug/haarcascade_frontalface_alt2.xml";
  24. //cascade = (CvHaarClassifierCascade*)cvLoad (cascade_name, 0, 0, 0 );
  25. /*    "haarcascade_profileface.xml";*/
  26. /*int detect_and_draw( IplImage* img,CvHaarClassifierCascade* cascade )
  27. {
  28. storage = cvCreateMemStorage(0);
  29. //AfxMessageBox("hi,you!");
  30.     int scale = 1;
  31.     IplImage* temp = cvCreateImage( cvSize(img->width/scale,img->height/scale), 8, 3 );
  32.     CvPoint pt1, pt2;
  33.     int i,N=0;
  34.     //cvPyrDown( img, temp, CV_GAUSSIAN_5x5 );
  35.     cvClearMemStorage( storage );
  36.     //cvEqualizeHist(small_img,small_img);
  37. //AfxMessageBox("3");
  38.     //cvClearMemStorage( storage );
  39. //AfxMessageBox("4");
  40.     if( cascade )
  41.     {
  42. //AfxMessageBox("cascade Loaded!");
  43.         CvSeq* faces = cvHaarDetectObjects( img, cascade, storage,
  44. 1.1, 2, CV_HAAR_DO_CANNY_PRUNING,
  45. cvSize(40, 40));
  46. //AfxMessageBox("Wrong!");
  47. N=faces ? faces->total:0;
  48.         for( i = 0; i < (faces ? faces->total : 0); i++ )
  49.         {
  50.             CvRect* r = (CvRect*)cvGetSeqElem( faces, i );
  51.             pt1.x = r->x*scale;
  52.             pt2.x = (r->x+r->width)*scale;
  53.             pt1.y = r->y*scale;
  54.             pt2.y = (r->y+r->height)*scale;
  55.             cvRectangle( img, pt1, pt2, CV_RGB(255,0,0), 3, 8, 0 );
  56.         }
  57.     }
  58. else
  59. {
  60. AfxMessageBox(cascade_name);
  61. }
  62. cvNamedWindow("result",1);
  63.     cvShowImage( "result", img );
  64. return N;
  65. //cvDestroyWindow("result");
  66. //AfxMessageBox("4");
  67.     //cvReleaseImage( &gray );
  68.     //cvReleaseImage( &small_img );
  69. }*/
  70. //把IplImage转化为CBitmap类型
  71. HBITMAP Ipl2Bmp(IplImage *img)
  72. {
  73. HBITMAP hBitmap;
  74. hBitmap=CreateBitmap(img->width, img->height,img->nChannels*8, 1, NULL);
  75. SetBitmapBits(hBitmap, img->imageSize, img->imageData);
  76. return hBitmap;
  77. }