OpenCV 找不到我的 USB 网络摄像头



我正试图在我的MacBook上创建一个带有内置iSight相机的OpenCV应用程序。我从互联网上获取了一些非常简单的代码,并顺利运行。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( &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驱动器上连接了另一个摄像头?

这是基于windows的经验,但我认为主要问题是一样的。(从我笔记本电脑上的logitech USB摄像头获取输入。(

据我记忆所及;OpenCV不支持多个摄影机,因此无法选择摄影机。我猜你可以用你展示的代码轻松地运行你的内置摄像头。我解决类似问题的方法是停用内置摄像头。为USB摄像头提供cvCaptureFromCAM(0(功能的唯一"可用"插槽。

我希望这能解决你的问题,即使解决方案有点"笨拙"。

最新更新