【发布时间】:2011-12-21 14:06:53
【问题描述】:
我正在尝试在我的 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 驱动器?
【问题讨论】:
-
其他应用可以看到您的网络摄像头吗?抱歉,我不知道如何在 OSX 上发现网络摄像头的详细信息,但您所做的通常是正确的
-
我从webcam-osx.sourceforge.net 获得了应用程序 macam,它可以使用该设备,但它具有用 Objective-C 编写的相机软件驱动程序。我需要编写自己的相机驱动程序吗?
-
openCV使用系统的摄像头接口(直接在window上显示,在OSX上不知道),试试看这里:tech.groups.yahoo.com/group/OpenCV/messages