Hello,
I am trying use OpenCV to detect smile from face on real time video on iOS project. I have some sample and trying to make it work. I have seen a cascade smile.xml file being added in the project. When I tested the app, it couldn't detect smile face coming from camera video. I doubt, how this cascade.xml file created? Is there any standard cascade xml files (to use CvHaarClassifierCascade) to detect emotions like smile, sad etc.?
I am looking at this sample here, https://github.com/lukagabric/iOS-OpenCV
- (void)viewDidLoad
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"smile" ofType:@"xml"];
_cascade = (CvHaarClassifierCascade*)cvLoad([path cStringUsingEncoding:NSASCIIStringEncoding], NULL, NULL, NULL);
_storage = cvCreateMemStorage(0);
[super viewDidLoad];
}
- (void)didCaptureIplImage:(IplImage *)iplImage
{
IplImage *imgRGB = cvCreateImage(cvGetSize(iplImage), IPL_DEPTH_8U, 3);
cvCvtColor(iplImage, imgRGB, CV_BGR2RGB);
IplImage *imgSmall = cvCreateImage(cvSize(imgRGB->width/2, imgRGB->height/2), IPL_DEPTH_8U, 3);
cvPyrDown(imgRGB, imgSmall, CV_GAUSSIAN_5x5);
CvSeq *smiles = cvHaarDetectObjects(imgSmall, _cascade, _storage, 1.1f, 3, CV_HAAR_DO_CANNY_PRUNING);
for (int i = 0; i < smiles->total; i++)
{
CvRect cvrect = *(CvRect*)cvGetSeqElem(smiles, 0);
Mat matImgSmall = Mat(imgSmall);
rectangle(matImgSmall, cvrect, Scalar(255, 0, 0));
}
if (smiles->total > 0)
{
[self showSmileWithImage:imgSmall];
}
else
{
cvReleaseImage(&imgSmall);
}
[self didFinishProcessingImage:imgRGB];
}
↧