改用DirectShow+Opencv解决外置单USB接口的双目摄像头调用cv::VideoCapture打不开的问题

2023-11-19

最近在做windows人脸识别的项目中遇到一个很纳闷的问题,采用OpenCv库的VideoCapture打不开外置单USB双目摄像头,其他的只要是一个摄像头一跟USB就可以打开,在网上找了很多资料,七七八八的最终得以解决了,在这整理下。

环境:win7+vs2013+opencv 3.0.0+DirectShow。
相关资源在网上都能找到,下载下来做如下配置:

 

把D:\DirectShow\include中的"CameraDS.h"、"CameraDS.cpp"复制到项目当前目录下,并加载到项目的"头文件"、"源文件"中。在winNT.h文件的 typedef void *PVOID;之后加入如下行代码
  typedef void *POINTER_64 PVOID64;

错误:
error C2872: “ACCESS_MASK”: 不明确的符号
原因:using namespace cv和windows中的名称冲突,建议不要使用using namespace cv, 改用cv::Mat;
网址http://blog.csdn.net/sdlkjtz/article/details/69260382)

找不到cxcore.h文件:因为我用的是opencv3.0.0,CameraDS.h默认的是opencv2.4.9,作如下修改

旧库文件都在opencv/文件夹下,用opencv/cxcore.h替换cxcore.h 。
 


int CDVTFaceDlg::start_main()
{
	int cam_count;
	int cam_id_col;
	int cam_id_ir;
	//仅仅获取摄像头数目
	cam_count = CCameraDS::CameraCount();
	//printf("There are %d cameras.\n", cam_count);

	//获取所有摄像头的名称
	for (int i = 0; i < cam_count; i++)
	{
		char camera_name[1024] = {'\0'};
		std::string strCam_name = "";
		int retval = CCameraDS::CameraName(i, camera_name, sizeof(camera_name));
		if (retval >0){
			strCam_name = camera_name;
			if (strCam_name == CAM_COL_NAME || strCam_name == "USB2.0_CAM1"){ cam_id_col = i; }
			if (strCam_name == CAM_IR_NAME || strCam_name == "USB2.0_CAM2"){ cam_id_ir = i; }
		}
		
	}
	if (cam_count == 0) return -1;
	//打开第一个摄像头
	if (!m_cameraCol.OpenCamera(cam_id_col, true, 480, 640)) //弹出属性选择窗口,用代码制定图像宽和高
	{
		AfxMessageBox(CString("无法打开摄像头1"));
		return -1;
	}
	if (!m_cameraIr.OpenCamera(cam_id_ir, true, 480, 640)) //弹出属性选择窗口,用代码制定图像宽和高
	{
		AfxMessageBox(CString("无法打开摄像头2"));
		return -1;
	}
	// 设置计时器,每10ms触发一次事件
	SetTimer(1, 30, NULL);
	//SetTimer(2, 500,NULL);
	//启动识别线程
	m_PrsApiHandle->ThreadBegin();
	return 0;
}

以上代码可以打开单USB双目摄像头,但是也存在问题:调用OpenCamera(cam_id_col, true, 480, 640))时,true改成false,即不弹出属性设置对话框只能打开一个摄像头,单步调试OpenCamera接口到 如下if(iconfig->GetFormat(&pmt) !=S_OK)总是returnfalse。哪位大侠遇到这样的问题呢?

AM_MEDIA_TYPE* pmt;    
if(iconfig->GetFormat(&pmt) !=S_OK) 
{
   //printf("GetFormat Failed ! \n");
   return   false;   
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

改用DirectShow+Opencv解决外置单USB接口的双目摄像头调用cv::VideoCapture打不开的问题 的相关文章

  • opencv如何使用compareHist函数

    img cv2 imread mandrill png histg cv2 calcHist img 0 None 256 0 256 if len sys argv lt 2 print gt gt sys stderr Usage sy
  • bitblt 在 Windows 10 版本 1703 上失败 (15063.138)

    使用 Visual Studio 2017 vc141 以下代码应该从前游戏窗口获取屏幕截图 但现在它返回黑色和空白图像 唯一的游戏问题 尝试过 OpenGL 和 Vulkan ogl 返回黑色 vulkan 返回白色 在升级到 Windo
  • OpenCV:视频结束后如何重新启动?

    我正在播放视频文件 但播放完毕后如何再次播放 Javier 如果您想一遍又一遍地重新启动视频 也称为循环播放 可以通过在帧数达到时使用 if 语句来实现cap get cv2 cv CV CAP PROP FRAME COUNT 然后重置帧
  • 相机标定(OpenCV 2.3)-如何使用畸变参数?

    我有一组带有一些附加标记的刚体图像 我在这些标记之一中定义了一个原点坐标系 我想获得该坐标系与在相机原点定义的坐标系之间的旋转和平移 我尝试了一段时间 POSIT 以下this http goo gl cUYYt 但从未获得可接受的结果 直
  • 如何在opencv python中为图像添加边框

    如果我有如下图所示的图像 如何在图像周围添加边框 以便最终图像的整体高度和宽度增加 但原始图像的高度和宽度保持在中间 下面的代码添加了一个大小恒定的边框10像素到原始图像的所有四个边 对于颜色 我假设您想要使用背景的平均灰度值 这是我根据图
  • 来自 OpenCV 的外部参数

    我正在使用 OpenCV 来校准立体相机对 我拍摄了各种校准照片 并且使用 cv2 calibrateCamera 对内在参数进行了令人满意的拟合 然而 目前尚不清楚如何获取外部参数 该函数仅返回cameraMatrix 尽管它很有用 但实
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • 在加载“cv2”二进制扩展期间检测到递归

    我有一个小程序 在 pyinstaller 编译后返回 opencv 错误 但无需编译即可工作 我在 Windows 10 上使用 Python 3 8 10 Program 导入 pyautogui将 numpy 导入为 np导入CV2
  • 在 QtCreator 中将 OpenCV 2.3 与 Qt 结合使用

    随着 OpenCV 2 3 版本终于发布 我想在我的系统上编译并安装这个最新版本 由于我经常使用 Qt 和 QtCreator 我当然希望能够在我的 Qt 项目中使用它 我已经尝试了几种方法几个小时 但总是出现错误 第一次尝试 使用WITH
  • OpenCV 3 中的 FLANN 错误

    我运行的是 Ubuntu 14 04 我正在尝试使用 openCV 3 运行 FLANN 但出现错误 下面的所有内容都是通过使用 AKAZE 和 ORB 进行尝试的 但代码来自我尝试使用 ORB 的情况 我使用 ORB 来查找描述符和关键点
  • 如何将输出视频保存到 OpenCV 中的文件中

    我想将输出视频保存到文件中而不是显示它并尝试使用 cvcaptureimage 但仍然无法获得结果 include
  • opencv 2.3.* 读取不工作

    我无法让 imread 工作 与这个人有同样的问题 OpenCV imwrite 2 2 在 Windows 7 上导致异常 并显示消息 OpenCV 错误 未指定错误 无法找到指定扩展名的编写器 https stackoverflow c
  • 仅获取图像中的外部轮廓

    我有这段代码 可以在图像中绘制轮廓 但我只需要外部轮廓 import cv2 import numpy as np camino C Users Usuario Documents Deteccion de Objetos 123 jpg
  • 创建 OpenCV 的 mouseCallback 函数的基于类的实现时遇到问题

    正如标题所示 我在基于类的 C 结构中实现 OpenCV 的 mouseCallback 函数时遇到了一些麻烦 请允许我解释一下 我定义了一个名为 BriskMatching 的类 在其中创建了一个名为 mouseCallback 的成员函
  • 为什么我无法在 Mac 12.0.1 (Monterey) 上使用 pip 安装 OpenCV? [复制]

    这个问题在这里已经有答案了 当我尝试使用 python pip 安装 OpenCV 时 它显示了以下内容 Remainder of file ignored Requirement already satisfied pip in Libr
  • minAreaRect OpenCV 返回的裁剪矩形 [Python]

    minAreaRectOpenCV 中返回一个旋转的矩形 如何裁剪矩形内图像的这部分 boxPoints返回旋转矩形的角点的坐标 以便可以通过循环框内的点来访问像素 但是在 Python 中是否有更快的裁剪方法 EDIT See code在
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • OpenCV 跟踪器:模型未在函数 init 中初始化

    在视频的第一帧 我运行一个对象检测器 它返回对象的边界框 如下所示
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • 二值图像中骨架上两点之间的最短路径

    我有一个二进制图像 其中包含图像的一个像素宽度骨架 您可能基本上知道 在这个二值图像中 我在骨架上有 1 在其他地方有 0 如何找到骨架上两个非零元素之间的最短距离 路径也应该在骨架本身上 我想使用 A star 算法的 C 实现 我找到了

随机推荐

  • 物理端口UP 协议DOWN 的排错步骤

    端口的物理层Up 但是协议Down 可能的原因有很多种 一般而言 链路层协议从 初始化到Up 起来 都会经过一个协议的 协商 过程 这里所说的协商是广义上的协商 既包括链路层协议本身规定的参数 能力协商 也包括协议所规定的定期性的链路通达性
  • Drupal YAML 反序列化代码执行漏洞(CVE-2017-6920)

    事件背景 框架漏洞收集 老外的CMS框架 比较复杂 数据流向太长 调试需要消耗较多的时间 漏洞说明 1 漏洞原理 2017年6月21日 Drupal官方发布了一个编号为CVE 2017 6920 的漏洞 影响为Critical 这是Drup
  • maven 仓库配置 pom中repositories属性

    什么是Maven仓库 在不用Maven的时候 比如说以前我们用Ant构建项目 在项目目录下 往往会看到一个名为 lib的子目录 那里存放着各类第三方依赖jar文件 如log4j jar junit jar等等 每建立一个项目 你都需要建立这
  • python实现二叉树遍历

    使用python实现二叉树的四种遍历 前序 中序 后序和层次遍历 以遍历下图二叉树为例 1 树的构造 代码如下 coding utf 8 class Node object 节点类 def init self elem 1 lchild N
  • 串的模式匹配算法之KMP与BF

    这几天做手机软件 都不怎么看一些算法小程序了 同学数据结构作业 急需交 帮其做 文件名 KMP BF cpp 描述 实验内容 比较BF算法和KMP算法的优劣 实验基本要求 1 采用定长顺序显示表示串长的结构来存储串 结构定义见课件第17张幻
  • 第一回:Matplotlib初相识

    文章目录 第一回 Matplotlib初相识 一 认识matplotlib 二 一个最简单的绘图例子 三 Figure的组成 四 两种绘图接口 五 通用绘图模板 思考题 第一回 Matplotlib初相识 一 认识matplotlib Ma
  • 完美解决maven项目配置文件不生效、更新问题

    0 前言 三种需求情况 场景 以及解决办法 1 不知道为什么配置文件 xmlymlproperties 不生效 可能是java路径也可能是resource路径 2 Maven项目配置文件 不实时更新 3 非resource路径下的配置文件不
  • 计算机辅助诊断应用,数据挖掘在计算机辅助诊断中的应用研究

    摘要 近年来 计算机辅助诊断 Computer Aided Diagnosis CAD 逐渐成为医学领域的研究热点之一 很多计算机辅助诊断技术不断出现并获得快速发展 对于提高临床医生诊断的准确率 减少漏诊起到了积极的作用 数据挖掘技术的兴起
  • 网络编程中的协议格式

    数据包封装 传输层及其以下的机制由内核提供 应用层由用户进程提供 后面将介绍如何使用socket API编写应用程序 应用程序对通讯数据的含义进行解释 而传输层及其以下处理通讯的细节 将数据从一台计算机通过一定的路径发送到另一台计算机 应用
  • 毕业设计-基于 MATLAB 的车牌识别系统设计

    目录 前言 课题背景和意义 实现技术思路 一 车牌识别系统总体方案设计 二 车牌识别系统硬件设计 三 车牌识别系统软件设计 四 实验结果与分析 部分源代码 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕
  • 计算至少需要多少个快递主站点javascript

    题目 题目描述 快递业务范围有N个站点 A站点与B站点可以中转快递 则认为A B站可达 如果A B可达 B C可达 则A C可达 现在给N个站点编号0 1 n 1 用s i j 表示i j是否可达 s i j 1表示i j可达 s i j
  • BGP面试常见问题

    1 IBGP 为什么采用全互联 不采用全互联怎么部署 由 由于IBGP的水平分割导致一个路由器收到的一条BGP路由不能传递给其他IBGP的邻居 这样的话 如果要让一个iGp中所有路由器都要可以给别的路由器传递BGP路由的话 就需要建立全互连
  • ..\OBJ\LCD.axf: error: L6047U: The size of this image (34984 bytes) exceeds,KEIL5破解方法

    OBJ LCD axf error L6047U The size of this image 34984 bytes exceeds 相信刚开始学习使用KEIL的同学有可能会遇到这个问题 我当时看到这个问题也是一脸懵逼 为啥会有这个错误
  • STM32F401RET6智能锁实战项目-----之环境搭建

    一 环境搭建 1 安装keil5软件 直接双击keil5安装包中的 exe 后缀文件 然后全选下一步即可 注意 keil5的路径不能含中文或路径过长 可以不安装在C盘 二 破解keil5 安装完成后 桌面便会出现一个keil5的快捷方式图标
  • 【华为OD机试真题】区间连接器(连接器问题)(java&python)100%通过率 超详细代码注释 代码深度解读

    华为OD机试真题 2022 2023 真题目录 点这里 华为OD机试真题 信号发射和接收 试读 点这里 华为OD机试真题 租车骑绿道 试读 点这里 区间连接器 知识点数组排序Q滑窗时间限制 1s空间限制 256MB限定语言 不限 题目描述
  • 如何轻松实现跨境电商,华为云解决方案告诉你

    一 跨境电商 服务器宕机怎么办 各位观众老爷们好 接下来我将介绍我们的主人公 这个男孩看好了 他叫小帅 是一名公司技术主管 并且单身暗恋小美 另外一个女孩 她叫小美 是该公司的高级程序员 同时对小帅也颇有好感 作为跨境电商员工的小美 今天又
  • 【报错解决办法】bad restore file magic number (file may be corrupted) -- no data loaded

    今天在服务器上load一个Rdata的时候出现了这个报错 这还是第一次 之前load的都没问题 重装过一次R 上网一搜 发现是r的版本不对 检查之后发现确实如此 windows的R是4 1 2的版本 而linux上是3 6 于是我就重新在l
  • mongo- spring boot 操作- and or查询

    mongo spring boot 操作 and or查询 场景 select from user where address 上海 age gt 10 and name 小明 or nickName like 小明 以前查询在 mongo
  • lfs在Mandrake安装下的安装的一些体验

    首先 在第一遍安装GCC的时候 提示 cannot find lc 从网上搜索出来的都是提示需要安装一个glibc static的这么一个包 我就找阿找阿 找了半天 反正是没有能够找到一个合适的版本出来 这就让我服了 还好 我在编译GCC的
  • 改用DirectShow+Opencv解决外置单USB接口的双目摄像头调用cv::VideoCapture打不开的问题

    最近在做windows人脸识别的项目中遇到一个很纳闷的问题 采用OpenCv库的VideoCapture打不开外置单USB双目摄像头 其他的只要是一个摄像头一跟USB就可以打开 在网上找了很多资料 七七八八的最终得以解决了 在这整理下 环境