Я использую OpenCV 2.4.2 и C ++. У меня есть небольшая проблема с прямоугольником, который определяет пару глаз. Прямоугольник появляется не вокруг пары глаз, а за пределами обнаруженного прямоугольника лица. Я думаю, что я не могу получить правильные параметры.
Вот кусок кода
for(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);
imwrite("C:/Users/DELL/Documents/Visual Studio 2010/Projects/Haarcascade/Haarcascade/fot.jpg",face);
vector<Rect> eyes;
eye.detectMultiScale(face,eyes);
for( size_t j = 0; j < eyes.size(); j++ ){
rectangle(frame,eyes[i],Scalar(255,0,0),4,8,0);
}
}
Может кто-нибудь помочь, пожалуйста? Спасибо
Вы ищете глаза в диапазоне от 0
в face->width
и из 0
в face->height
Таким образом, вы получаете координаты глаз относительно границ лица, а затем рисуете глаза на исходном кадре. Вам нужно добавить координаты лица в кадре, что-то вроде этого:
Rect r(faces[i].x + eyes[i].x, faces[i].y + eyes[i].y, eyes[i].width,eyes[i].height );
rectangle(frame,r,Scalar(255,0,0),4,8,0);
Других решений пока нет …