1
我正在研究使用opencv庫的代碼,該代碼正在跟蹤用戶的臉部和臉部特徵。我已經設法實時檢測臉部以及網絡攝像頭的眼睛,嘴脣等特徵。我想現在從檢測到的特徵中提取情感。我想知道是否有任何可用的數據集可用於比較情緒以及如何完成。用於情感檢測的數據集
這裏是人臉檢測
CvRect detectFaceInImage(const IplImage *inputImg, const CvHaarClassifierCascade* cascade)
{
const CvSize minFeatureSize = cvSize(20, 20);
const int flags = CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_ROUGH_SEARCH; // Only search for 1 face.
const float search_scale_factor = 1.1f;
IplImage *detectImg;
IplImage *greyImg = 0;
CvMemStorage* storage;
CvRect rc;
double t;
CvSeq* rects;
int i;
storage = cvCreateMemStorage(0);
cvClearMemStorage(storage);
// If the image is color, use a greyscale copy of the image.
detectImg = (IplImage*)inputImg; // Assume the input image is to be used.
if (inputImg->nChannels > 1)
{
greyImg = cvCreateImage(cvSize(inputImg->width, inputImg->height), IPL_DEPTH_8U, 1);
cvCvtColor(inputImg, greyImg, CV_BGR2GRAY);
detectImg = greyImg; // Use the greyscale version as the input.
}
// Detect all the faces.
t = (double)cvGetTickCount();
rects = cvHaarDetectObjects(detectImg, (CvHaarClassifierCascade*)cascade, storage,
search_scale_factor, 3, flags, minFeatureSize);
t = (double)cvGetTickCount() - t;
printf("[Face Detection took %d ms and found %d objects]\n", cvRound(t/((double)cvGetTickFrequency()*1000.0)), rects->total);
// Get the first detected face (the biggest).
if (rects->total > 0) {
rc = *(CvRect*)cvGetSeqElem(rects, 0);
}
else
rc = cvRect(-1,-1,-1,-1); // Couldn't find the face.
//cvReleaseHaarClassifierCascade(&cascade);
//cvReleaseImage(&detectImg);
if (greyImg)
cvReleaseImage(&greyImg);
cvReleaseMemStorage(&storage);
return rc; // Return the biggest face found, or (-1,-1,-1,-1).
}
我看到你使用的是舊的OpenCV API,有什麼具體原因嗎?您是否成功使用OpenCV進行情感檢測? – 2013-08-02 15:57:53