本帖最后由 HJS 于 2015-1-18 16:33 编辑
系统是XP,opencv2.4.10+vs2010英文版配置。
在台式机电脑上外界4个USB广角摄像头,但画面只有3个出来,第四个绿屏;我跟踪代码,发现每个摄像头都读出来了的,而且每个摄像头的每帧都有数据。请问这是什么原因?有人遇到吗?我看网上有人这样也打开了四个摄像头。代码如下:
#include<stdlib.h>
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main(void)
{
char *window1 = "摄像头1";
char *window2 = "摄像头2";
char *window3 = "摄像头3";
char *window4 = "摄像头4";
char c = 0;
CvCapture *capture1 = cvCreateCameraCapture(3);
CvCapture *capture2 = cvCreateCameraCapture(2);
CvCapture *capture3 = cvCreateCameraCapture(1);
CvCapture *capture4 = cvCreateCameraCapture(0);
IplImage *frame1, *frame2, *frame3, *frame4;
cvNamedWindow(window1, 0);
cvNamedWindow(window2, 0);
cvNamedWindow(window3, 0);
cvNamedWindow(window4, 0);
while(1)
{
frame1 = cvQueryFrame(capture1);//捕获摄像头一帧视频画面
if (!frame1)
{
printf("摄像头1有问题!\n");
break;
}
frame2 = cvQueryFrame(capture2);//捕获摄像头一帧视频画面
if (!frame2)
{
printf("摄像头2有问题!\n");
break;
}
frame3 = cvQueryFrame(capture3);//捕获摄像头一帧视频画面
if (!frame3)
{
printf("摄像头3有问题!\n");
break;
}
frame4 = cvQueryFrame(capture4);//捕获摄像头一帧视频画面
if (!frame4)
{
printf("摄像头4有问题!\n");
break;
}
cvShowImage(window3, frame3);
cvShowImage(window1, frame1);
cvShowImage(window2, frame2);
cvShowImage(window4, frame4);
c = cvWaitKey(30);
if (c == 27)//Esc键退出
{
break;
}
}
cvReleaseCapture(&capture1);
cvReleaseCapture(&capture2);
cvReleaseCapture(&capture3);
cvReleaseCapture(&capture4);
cvDestroyWindow(window1);
cvDestroyWindow(window2);
cvDestroyWindow(window3);
cvDestroyWindow(window4);
return 0;
}
|