【整理】同一Hub 同时显示一块板上的两个USB摄像头
来源:互联网 发布:com和net域名哪个好 编辑:程序博客网 时间:2024/06/06 10:04
很多文章提到了双目相机的驱动 以及DirectShow SDK的安装,但是我在实际的操作中还是遇到了许多问题
目前解决了一部分,先在总结如下,供大家参考。
针对单Hub,就是2个摄像头共用一个USB接口
1.DirectShow SDK开发环境的搭建
在VS2013中导入并编译 DirectShow SDK 安装路径下\ Samples\C++\DirectShow \BaseClasses 工程,可以编译为debug版本,也可以编译release 版本。 编译成功后在\Samples\C++\DirectShow\BaceClasses\Debug_Unicode\目录下将产生相应的库。 将DirectShow SDK集成到我们的项目工程,以Amcap为例: 在VS2013中导入Amcap源码,右键点击工程选择 “属性-->配置属性-->VC++目录”中进行操作:
在包含目录中添加
DirectShow\Include; DirectShow\Samples\C++\DirectShow\BaseClasses;
在库目录中添加
DirectShow\Lib; DirectShow\Samples\C++\DirectShow\BaseClasses\Debug_Unicode; 在“配置属性-->链接器目录”中进行操作:
在附加库目录中添加
DirectShow\Samples\C++\DirectShow\BaseClasses\Debug_Unicode; DirectShow\Lib; 点击工程“右键-->清理-->生成”,将生成exe可执行文件,即可调试。至此已成功搭建了DirectShow的开发环境。
这一部分最后直接将DirectShow整个文件(不是子文件)放到你的工程里面去,然后在进行添加,我的整个目录如下(比较长)
F:\documents13\visual studio 2013\Projects\BV_test_0508\BV_test_0508\DirectShow\Samples\C++\DirectShow\BaseClasses
ps:配置前默认已经在vs中配置好了opencv(配置参考链接http://johnhany.net/2013/11/environment-for-opencv-with-vs2010/)
主函数如下:
// CaptureTwoCamera.cpp : Defines the entry point for the console application.//#include <stdio.h>#include <highgui.h>#include "stdafx.h"#include "CameraDS.h"int _tmain(int argc, _TCHAR* 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);elseprintf("Can not get Camera #%d's name.\n", i);}if (cam_count == 0)return -1;CCameraDS camera1;CCameraDS camera2;//打开第一个摄像头//if(! camera.OpenCamera(0, true)) //弹出属性选择窗口 我的摄像头默认不是MJPEG 需要调一下(代码?本王不会啊!)有些人说到能显示一个另外一个是一个灰色的图有可能是格式的问题if (!camera1.OpenCamera(0, true, 320, 240)) //弹出属性选择窗口,用代码制定图像宽和高{fprintf(stderr, "Can not open camera1.\n");return -1;}if (!camera2.OpenCamera(1, true, 320, 240)) //弹出属性选择窗口,用代码制定图像宽和高{fprintf(stderr, "Can not open camera2.\n");return -1;}cvNamedWindow("camera1");cvNamedWindow("camera2");while (1){//获取一帧IplImage *pFrame1 = camera1.QueryFrame();IplImage *pFrame2 = camera2.QueryFrame();//显示/*cvShowImage("camera", pFrame);if (cvWaitKey(20) == 'q')break;*///cvShowMultiImages( "Multiple Cameras", 2, pFrame1, pFrame2);//cvReleaseImage(&frame1); //cvReleaseImage(&frame2);cvShowImage("camera1", pFrame1);cvShowImage("camera2", pFrame2);if (cvWaitKey(20) == 'q')break;}//camera.CloseCamera(); //可不调用此函数,CCameraDS析构时会自动关闭摄像头camera1.CloseCamera();camera2.CloseCamera();cvDestroyWindow("camera1");cvDestroyWindow("camera2");return 0;}
相关文件打包发到百度网盘 https://pan.baidu.com/s/1eR9Gt6i 提取码986e
关键是环境的配置一定要仔细
- 【整理】同一Hub 同时显示一块板上的两个USB摄像头
- 两个usb摄像头的同时采集图像的一般方法。
- USB HUB连接多个摄像头的日记
- 在LCD上显示USB摄像头图像
- Apache配置--同一台机器上两个应用需要同时占用80端口的问题解决方法
- USB hub的苦恼
- 驱动arm板上的usb摄像头并验证
- 如何判断两个可移动磁盘卷是否在同一个USB HUB上?
- 如何判断两个可移动磁盘卷是否在同一个USB HUB上?
- 嵌入式板上使用USB摄像头问题
- 用roi在同一幅图像上显示两个图像
- Opencv同时调用两个摄像头
- C#调用两个至多个USB摄像头的问题
- Linux: 两个USB摄像头的数据采集问题
- C#调用两个至多个USB摄像头的问题
- Linux: 两个USB摄像头的数据采集问题(嵌入式)
- 同一TextView上内容的不同显示
- usb hub
- 简单的线程理解
- java 多线程中wait/notify使用
- 不恰当的update语句使用主键和索引导致mysql死锁
- 七星远程招聘平台,助您实现在家办公的梦想!
- MFC之DLL
- 【整理】同一Hub 同时显示一块板上的两个USB摄像头
- Go学习笔记(八)范围(Range),Map(集合),递归函数,类型转换
- Hello world ----------AngularJS示例
- Java + Spring 实现邮件的发送
- Android路由的实现
- jni开发
- 快速幂
- 小白解决CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
- python pyinstaller 打包含有matplotlib库