OpenCV cvCaptureFromCAM возвращает ноль - PullRequest
1 голос
/ 19 июля 2011

Я установил OpenCV 2.1 на свой ноутбук и пытаюсь внедрить программу распознавания лиц.Я использую Logitech C210 для своего проекта.Я знаю, что с камерой все в порядке, потому что программное обеспечение обнаруживает и отображает ее, а запуск facedetect.exe в каталоге примеров показывает, что камера работает.Но каким-то образом при использовании исходного кода facedetect.cpp в моем VS2010 Ultimate я даже не смог заставить работать cvCaptureFromCAM!Вот мой код:

#include "stdafx.h"
#include <iostream>
#include "cv.h"
#include "highgui.h"

using namespace std;
using namespace cv;

int main(int, char**) {
IplImage* frame;
// CvCapture* cap = cvCaptureFromCAM(-1);
//  cvNamedWindow( "Example2_9", CV_WINDOW_AUTOSIZE );
CvCapture* capture;
cvWaitKey(20);
capture = cvCreateCameraCapture( -1 ); //yes, if 0 doesn't work try with -1
//assert( capture != NULL );

for(;;) {
    frame = cvQueryFrame(capture);

    if(frame == NULL)
        return -1;

   imshow("cap", frame);
    if(waitKey(30) >= 0)
        break;
}

}

Хорошо, так что это не фактический код распознавания лица (он слишком длинный), но он выдвигает на первый план проблему здесь:что значение захвата после cvCaptureFromCAM составляет 0x000000.Это не должно случиться, не так ли?Может кто-нибудь сказать мне, что происходит?

Ответы [ 2 ]

0 голосов
/ 25 октября 2012

Попробуйте обновить до OpenCV 2.4.2.Не совсем та же проблема (для меня queryFrame () всегда возвращал NULL, используя v2.2.0), но теперь он работает как шармМожет быть, это просто проблемы совместимости.

0 голосов
/ 10 ноября 2011

Попробуйте дублировать звонки.Пожалуйста, обратитесь к моему вопросу, который выглядит аналогично. Как избежать выбора «Источник видео -> Источник захвата» в OpenCV 2.3.0 - Visual C ++ 2008

...