ошибка доступа к веб-камере - PullRequest
0 голосов
/ 27 марта 2011

Я все еще новичок в opencv, я делаю простую программу на основе примера для доступа к веб-камере, но всегда терпит неудачу. я изменил идентификатор переменной на 0,1,2 ... 100, но я получил тот же результат. это моя программа:

#include "cv.h"
#include "highgui.h"

#include "stdio.h"
#include "iostream"

// A Simple Camera Capture Framework
int main()
{
IplImage* img = NULL;
CvCapture* cap = NULL;
int id=0;

cap = cvCaptureFromCAM(id);
cvNamedWindow("Images",CV_WINDOW_AUTOSIZE);

if ( !cap )
printf("ERROR\n\n");
else
for(;;)
{
img = cvQueryFrame(cap);
cvShowImage("Imagenes", img);
cvWaitKey(10);
}

cvReleaseImage(&img);
cvReleaseCapture(&cap);

return 0;
}

спасибо за вашу помощь

1 Ответ

0 голосов
/ 27 марта 2011

Сделайте себе одолжение и проверьте возврат функций. Может быть, некоторые из них терпят неудачу, и вы никогда не узнаете почему.

Еще один совет: попробуйте с id = -1.

#include <iostream>
#include <sstream>
#include <string>

#include <cv.h>
#include <highgui.h>

int main()
{
    CvCapture* capture = NULL;
    if ((capture = cvCaptureFromCAM(-1)) == NULL)
    {
        fprintf(stderr, "ERROR: capture is NULL \n");
        return -1;
    }

    cvNamedWindow("mywindow", CV_WINDOW_AUTOSIZE);

    cvQueryFrame(capture); // Sometimes needed to get correct data

    IplImage* frame  = NULL;
    while (1)
    {
        if ((frame = cvQueryFrame(capture)) == NULL)
        {
            fprintf( stderr, "ERROR: cvQueryFrame failed\n");
            break;
        }

        if (frame == NULL)
        {
            usleep(100000);
            continue;
        }

        cvShowImage("mywindow", frame); // Do not release the frame!

        int key = cvWaitKey(10);
        if (key  == 27)  // ESC was pressed
            break;
    }

    cvReleaseCapture(&capture);
    cvDestroyWindow("mywindow");

    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...