Почему я не могу заставить прямоугольник правильно отображаться в открытом резюме?

Я тестирую уже классический код обнаружения лиц с помощью Open CV, я получаю лица в vectorиз Rect, Поэтому я хочу получить полученное Rects быть отображенным на изображении.

while (true) {

camera >> cameraFrame;
if (cameraFrame.empty ()) {

cerr << "Error: Could grab any frame!" << endl;
exit(2);
}

imshow("Hola mundo", cameraFrame);
cameraFrame = shrinkImage(turn2Gray(cameraFrame));
imshow("Hola mundo gris", cameraFrame);
equalizeHist(cameraFrame, equalizedImage);
imshow("Hola mundo surreal y perturbador", equalizedImage);

int flags = CASCADE_SCALE_IMAGE;
Size minFeatureSize(20,20);
float searchScaleFactor = 1.1f;
int minNeighbors = 4;

std::vector<Rect> faces;

faceDetector.detectMultiScale(equalizedImage, faces, searchScaleFactor, minNeighbors, flags, minFeatureSize);
cout << "Caras: " << faces.size() << endl;

for (i=0; i< (int) faces.size(); i++) {

rectangle( equalizedImage, faces[i], CV_RGB(0,255,0), 2, 8, 0 );

}

if (waitKey(20) == 27) {

}

}

Я никогда не получаю прямоугольник для отображения. Что не так с моим rectangle() функционировать?

Я сделал рекомендованные правки, вот как теперь выглядит цикл обнаружения:

while (true) {

camera >> cameraFrame;
if (cameraFrame.empty ()) {

cerr << "Error: Could grab any frame!" << endl;
exit(2);
}

imshow("Hola mundo", cameraFrame);
greyFrame = shrinkImage(turn2Gray(cameraFrame));
imshow("Hola mundo gris", greyFrame);
equalizeHist(greyFrame, equalizedImage);
imshow("Hola mundo surreal y perturbador", equalizedImage);faceDetector.detectMultiScale(equalizedImage, faces, searchScaleFactor, minNeighbors, flags, minFeatureSize);
cout << "Caras: " << faces.size() << endl;

for (i=0; i < faces.size(); i++) {

rectangle( cameraFrame, faces[i], CV_RGB(0,255,0), 2, 8, 0 );

}
imshow("Hola Diego", cameraFrame);

if (waitKey(20) == 27) {
break;
}

}

0

Решение

вы пытаетесь нарисовать цвет RGB на полутоновом изображении, также вам нужно сделать imshow () после рисование прямоугольника, а затем waitKey (), чтобы обновить окно

пытаться:

Mat greyFrame = shrinkImage(turn2Gray(cameraFrame)); // make a new grey mat, keep the original for drawing later
imshow("Hola mundo gris", greyFrame);
equalizeHist(greyFrame, equalizedImage);
imshow("Hola mundo surreal y perturbador", equalizedImage);

// ...

for (i=0; i< (int) faces.size(); i++) {
rectangle( cameraFrame, faces[i], CV_RGB(0,255,0), 2, 8, 0 );
}

imshow("Hola diego", cameraFrame);
if (waitKey(20) == 27) {
break;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]