OpenCV не может найти мою USB-веб-камеру

#opencv #usb #webcam

#opencv #usb #Вебкам

Вопрос:

Я пытаюсь создать приложение OpenCV на своем MacBook со встроенной камерой iSight. Я взял очень простой код из Интернета и запустил его без проблем. OpenCV автоматически обнаружил встроенную веб-камеру и запустился должным образом, но я не могу заставить ее работать с моей USB-веб-камерой.

 #include <stdio.h>
#include <opencv.hpp>

int main( int argc, char **argv )
{
    CvCapture *capture = 0;
    IplImage  *frame = 0;
    int       key = 0;

    /* initialize camera */
    capture = cvCaptureFromCAM(0);

    /* always check */
    if ( !capture ) {
        fprintf( stderr, "Cannot open initialize webcam!n" );
        return 1;
    }

    /* create a window for the video */
    cvNamedWindow( "Test", CV_WINDOW_AUTOSIZE );

    while( key != 'q' ) {
        /* get a frame */
        frame = cvQueryFrame( capture );

        /* always check */
        if( !frame ) break;

        /* display current frame */
        cvShowImage( "Test", frame );

        /* exit if user press 'q' */
        key = cvWaitKey( 1 );
    }

    /* free memory */
    cvDestroyWindow( "Test" );
    cvReleaseCapture( amp;capture );

    return 0;
}
  

Я скомпилировал это с:

 g   webcam.c -o webcam -I/opt/local/include/opencv2 -I/opt/local/include -L/opt/local/lib -lopencv_core -lopencv_highgui
  

Согласно документации, изменив строку capture = cvCaptureFromCAM(0); на
capture = cvCaptureFromCAM(1); , я должен иметь доступ к другой веб-камере, которую я подключил, но запуск программы выдает сообщение об ошибке: Warning: Max Camera Num is 0; Using camera 0

Какие шаги я могу предпринять, чтобы заставить OpenCV распознать, что у меня есть другая камера, подключенная к моему USB-накопителю?

Комментарии:

1. Могут ли другие приложения видеть вашу веб-камеру? Извините, я не знаю подробностей о том, как веб-камеры обнаруживаются в OSX, но то, что вы сделали, в целом правильно

2. Я получил приложение macam от webcam-osx.sourceforge.net который может использовать устройство, но у него есть программные драйверы для камеры, которые написаны на Objective-C. Нужно ли мне писать собственный драйвер камеры?

3. OpenCV использует системный интерфейс камеры (Directshow в окне, не знаю в OSX), попробуйте спросить здесь: tech.groups. yahoo.com/group/OpenCV/messages

Ответ №1:

Это основано на опыте Windows, но я считаю, что основная проблема та же. (Для получения входных данных с USB-камеры logitech на моем ноутбуке.)

Насколько я помню; OpenCV не поддерживает несколько камер и, следовательно, не выбор камеры. Я предполагаю, что вы можете легко запустить свою встроенную камеру с помощью кода, который вы показали. Моим решением аналогичной проблемы была деактивация встроенной камеры. Предоставление USB-камере единственного «доступного» слота для вашей функции cvCaptureFromCAM (0).

Я надеюсь, что это может решить вашу проблему, даже несмотря на то, что решение немного «неуклюжее».