enlightenment/src/modules/imfos/imfos_face.cpp

36 lines
823 B
C++
Executable File

#define HAVE_OPENCV
#ifdef HAVE_OPENCV
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#endif
#include <Eina.h>
#include "imfos_face.h"
using namespace cv;
#define FACE_CASCADE_FILE_PATH "/usr/share/opencv/haarcascades/haarcascade_frontalface_alt.xml"
int
imfos_face_search(char *data, int width, int height, int stride)
{
#ifdef HAVE_OPENCV
std::vector<Rect> faces;
CascadeClassifier face_cascade;
Mat frame_gray;
Mat mat(height, width, CV_8UC1, data, width + stride);
if (!face_cascade.load(FACE_CASCADE_FILE_PATH)) return 0;
face_cascade.detectMultiScale(mat, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30));
printf("Detect %d?\n",faces.size());
return (faces.size() > 0) ? 1 : 0;
#else
return 0;
#endif
}