用以下代码已经实现了,同时获取两个摄像头,并且在两个窗口上显示! 请问怎么样这两个视频窗口能够在一个窗口上显示呢? 谢谢了!! 形成画中画最棒!!
int main()
{
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; CCameraDS camera1,camera2;
if(! camera1.OpenCamera(0)) //第一个摄像头
{
fprintf(stderr, "Can not open camera.\n");
return -1;
}
//打开第二个摄像头
if(! camera2.OpenCamera(2)) //这里选择2是因为本程序运行后0和1都指向同一个摄像头
{
fprintf(stderr, "Can not open camera.\n");
return -1;
}
cvNamedWindow("camera1");
cvNamedWindow("camera2"); IplImage *img=0;
IplImage *img1=0; while(1)
{
//获取一帧
IplImage *img = camera1.QueryFrame(); //显示
cvShowImage("camera1", img);
//获取一帧
IplImage *img1 = camera2.QueryFrame(); //采用两个完全相同的摄像头时,程序在此崩溃 //显示
cvShowImage("camera2", img1);
if (cvWaitKey(20) == 'q')
break;
}
camera1.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头 cvDestroyWindow("camera1");
camera2.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头 cvDestroyWindow("camera2"); return 0;
}
int main()
{
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; CCameraDS camera1,camera2;
if(! camera1.OpenCamera(0)) //第一个摄像头
{
fprintf(stderr, "Can not open camera.\n");
return -1;
}
//打开第二个摄像头
if(! camera2.OpenCamera(2)) //这里选择2是因为本程序运行后0和1都指向同一个摄像头
{
fprintf(stderr, "Can not open camera.\n");
return -1;
}
cvNamedWindow("camera1");
cvNamedWindow("camera2"); IplImage *img=0;
IplImage *img1=0; while(1)
{
//获取一帧
IplImage *img = camera1.QueryFrame(); //显示
cvShowImage("camera1", img);
//获取一帧
IplImage *img1 = camera2.QueryFrame(); //采用两个完全相同的摄像头时,程序在此崩溃 //显示
cvShowImage("camera2", img1);
if (cvWaitKey(20) == 'q')
break;
}
camera1.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头 cvDestroyWindow("camera1");
camera2.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头 cvDestroyWindow("camera2"); return 0;
}
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法