opencv双摄像头的读取

opencv双摄像头的读取
opencv双摄像头的读取

opencv双摄像头的读取(接两个网络摄像头)

首先,需要下载于老师的那个CameraDS类,详见本论坛

之后,只需要实例化两个CameraDS类的对象,即可解决问题。代码如下所示:#include "camerads.h"

#include "string"

#include

#include

#include

#include

using namespace std;

int main( int argc, char** argv )

{

int cam_count;

//仅仅获取摄像头数目

cam_count = CCameraDS::CameraCount();

printf("There are %d cameras.\n", cam_count);

//获取所有摄像头的名称

for(int i=0; i < cam_count; i++)

{

char camera_name[1024];

int retval = CCameraDS::CameraName(i, camera_name, sizeof(camera_name) );

if(retval >0)

printf("Camera #%d's Name is '%s'.\n", i, camera_name);

else

printf("Can not get Camera #%d's name.\n", i);

}

if(cam_count==0)

return -1;

// 创建2个摄像头类

CCameraDS camera1;

CCameraDS camera2;

if(! camera1.OpenCamera(0, false))

{

fprintf(stderr, "Can not open camera.\n");

return -1;

}

//打开第二个摄像头

camera2.OpenCamera(1, false);

cvNamedWindow("cam1");

cvNamedWindow("cam2");

while(1)

{

//获取一帧

IplImage *pFrame1 = camera1.QueryFrame();

IplImage *pFrame2 = camera2.QueryFrame();

// 显示实时的摄像头视频

cvShowImage("cam1", pFrame1);

cvShowImage("cam2", pFrame2);

//cvWaitKey(33);

int key = cvWaitKey(33);

if( key == 27 ) break;

}

camera1.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头camera2.CloseCamera();

cvDestroyAllWindows();

return 0;

}

相关主题
相关文档
最新文档