Upload
start-an-end
View
97
Download
1
Embed Size (px)
Citation preview
[OpenCV] Nhận dạng khuôn mặt từ hình ảnh cho trướcWritten by Super User on 10 September 2012.
Yêu cầu: Cho vào một bức ảnh và đầu ra là nhận dạng khuôn mặt.
?1234567891011121314151617181920212223242526272829303132333435
#include <cv.h>#include <highgui.h>int main(){ CvHaarClassifierCascade * pCascade = 0; //con trỏ nhận diện nằm giữ data trong file XML CvMemStorage * pStorage = 0; // Khởi tạo bộ nhớ đệm CvSeq * pFaceRectSeq; int i; // Khởi tạo IplImage * pInpImg = cvLoadImage("010920121903.jpg",CV_LOAD_IMAGE_COLOR); pStorage = cvCreateMemStorage(0); pCascade = (CvHaarClassifierCascade *)cvLoad(("haarcascade_frontalface_alt.xml"),0,0,0); if (!pInpImg || !pStorage || !pCascade ) { printf("Khoi tao that bai: %s \n", (!pInpImg)? "khong the load file hinh anh" : (!pCascade)? "khong the load file xml -- " "kiem tra dung duong dan":"sai duong dan"); exit(-1); } //Nhận dạng mắt trong ảnh pFaceRectSeq = cvHaarDetectObjects( pInpImg, pCascade, pStorage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(0,0)); // Tạo cửa sổ để hiển thị hình ảnh cvNamedWindow("Nhan dien khuon mat",CV_WINDOW_AUTOSIZE); //Vẽ hình chủ nhật xung quanh khuôn mặt for (i=0;i<(pFaceRectSeq ? pFaceRectSeq->total:0);i++) { CvRect * r = (CvRect*)cvGetSeqElem(pFaceRectSeq,i); CvPoint pt1 = {r->x,r->y}; CvPoint pt2 = {r->x + r->width,r->y + r->height}; cvRectangle(pInpImg,pt1,pt2,CV_RGB(255,0,0),3,4,0); }
36373839404142434445464748
//hiển thị nhận dạng cvShowImage("Nhan dien khuon mat",pInpImg); cvWaitKey(0); cvDestroyAllWindows(); //Giải phóng bộ nhớ cvReleaseImage(&pInpImg); if (pCascade) cvReleaseHaarClassifierCascade(&pCascade); if (pStorage) cvReleaseMemStorage(&pStorage);}