Sto cercando di rilevare la bocca in un'immagine con OpenCV, così io sto usando il seguente codice:bocca Rilevare con OpenCV
#include "face_detection.h"
using namespace cv;
// Function detectAndDisplay
void detectAndDisplay(const std::string& file_name, cv::CascadeClassifier& face_cascade, cv::CascadeClassifier& mouth_cascade)
{
Mat frame = imread(file_name);
std::vector<Rect> faces;
Mat frame_gray;
Mat crop;
Mat res;
Mat gray;
cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);
// Detect faces
face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));
for(unsigned int i=0;i<faces.size();i++)
{
rectangle(frame,faces[i],Scalar(255,0,0),1,8,0);
Mat face = frame(faces[i]);
cvtColor(face,face,CV_BGR2GRAY);
std::vector <Rect> mouthi;
mouth_cascade.detectMultiScale(face, mouthi);
for(unsigned int k=0;k<mouthi.size();k++)
{
Point pt1(mouthi[k].x+faces[i].x , mouthi[k].y+faces[i].y);
Point pt2(pt1.x+mouthi[k].width, pt1.y+mouthi[k].height);
rectangle(frame, pt1,pt2,Scalar(0,255,0),1,8,0);
}
}
imshow("Frame", frame);
waitKey(33);
}
I classificatori sono haarcascade_frontalface_alt.xml
e haarcascade_mcs_mouth.xml
.
Il viso viene rilevato correttamente ma la bocca non lo è: ottengo anche gli occhi e alcune altre parti, come la fronte. C'è un modo per rilevare solo la bocca?
Ehi, Posso ottenere un collegamento al set di dati da dove hai ottenuto queste immagini? Ho le immagini con me ma non riesco a trovare il link alla pagina. Ho bisogno di citazioni. Grazie! –
@AninditKarmakar Ciao, è il set di dati KDEF: http://www.emotionlab.se/resources/kdef – minomic
@minomic Puoi guardare su questo argomento: http://stackoverflow.com/questions/37921913/java-and- haarcascade-face epizootica rilevamento bocca-as-the-naso – Adamo