Я работаю над приложением openCV. С помощью некоторого кода я могу обнаружить фронтальные поверхности. Я хочу обнаружить и просто следить за тем, как пользователь улыбается. Моя идея заключалась в обнаружении лица, я рисую вокруг него прямоугольник, и в этот момент я бы назвал обнаружение улыбки. До сих пор мой результат был менее успешным. Я отправляю свой код для обнаружения лиц, может ли кто-нибудь дать мне какие-либо указания, как начать с цикла for внутри обнаружения лица. Спасибо.Обнаружение улыбки внутри лица с использованием openCV в Java
public Mat detect(Mat inputframe) {
Mat mRgba = new Mat();
Mat mGrey = new Mat();
MatOfRect faces = new MatOfRect();
inputframe.copyTo(mRgba);
inputframe.copyTo(mGrey);
Imgproc.cvtColor(mRgba, mGrey, Imgproc.COLOR_BGR2GRAY);
Imgproc.equalizeHist(mGrey, mGrey);
face_cascade.detectMultiScale(mGrey, faces);
System.out.println(String.format("Detected %s face",
faces.toArray().length));
MatOfRect smileDetections = new MatOfRect();
face_cascade1.detectMultiScale(mGrey,smileDetections);
System.out.println(String.format("Detected %s smiles",smileDetections.toArray().length));
for (Rect rect : faces.toArray()) {
Point center = new Point(rect.x + rect.width * 0.5, rect.y
+ rect.height * 0.5);
Core.ellipse(mRgba, center, new Size(rect.width * 0.5,
rect.height * 0.5), 0, 0, 360, new Scalar(255, 0, 255), 4,
8, 0);
}
return mRgba;
}
}
какой каскад вы загрузили на 'face_cascade1'? – Micka
Я думаю, что лучшим решением является использование ASM-модели для распознавания выражения лица, как улыбка. что-то вроде этого: http://www.youtube.com/watch?v=v8ipupeMwgo – dervish
Вы также проверили образец opencv: /opencv-2.4.xx/samples/c/smiledetect.cpp? –
dervish