Цикл прервется, только если cvQueryFrame()
вернет кадр NULL или если пользователь нажмет q
на клавиатуре.
Добавьте отладку, чтобы вы знали, когда возникла первая ситуациябывает:
frame = cvQueryFrame( capture );
if( !frame )
{
qDebug("cvQueryFrame failed!");
break;
}
Вы уверены, что cvCaptureFromCAM(0)
работает?В зависимости от ОС я должен передать -1
для него.Но дело в том, что вы никогда не узнаете, успешно ли cvCaptureFromCAM(0)
, потому что вы не проверяете возврат, и это может быть проблемой!
capture = cvCaptureFromCAM(0);
if (!capture)
{
qDebug("cvCaptureFromCAM failed!");
//exit(0); or whatever
}
РЕДАКТИРОВАТЬ:
Обратите на это огромное внимание: вы создаете окно с именем "video DisplUM", но пытаетесь отобразить кадры в другом окне с именем "video".
В любом случае, также лучше, еслиВы измените функцию создания окна, чтобы использовать соответствующее перечисление:
cvNamedWindow("video DisplUM", CV_WINDOW_AUTOSIZE);
и faceTracker::run( )
comment detectFaces()
на данный момент и добавьте вызов cvShowImage ("video DisplUM", frame);
Всегда убедитесь, что ваше приложение работает с минимальными требованиями, прежде чем добавлять модные вещи, такие как распознавание лиц.Последнее предложение: напишите достаточно кода, чтобы захватить изображения из одного потока и отобразить их в окне, а затем перейти оттуда.