改用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 Python中编写4通道以上图像

    这对我来说是一个持续的挑战 我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像 到目前为止我的代码如下 import cv2 import numpy as np im1 cv2 imread im1
  • OpenCV 中更新窗口的 waitKey() 的替代方法

    到目前为止我见过的所有示例和书籍都建议使用 waitKey 1 来强制重新绘制 OpenCV 窗口 这看起来很奇怪而且太老套了 不必要的时候为什么还要等待 1 毫秒呢 还有其他选择吗 我尝试了 cv updateWindow 但它似乎需要
  • 变形:Opencv 使用 Visual Studio 将图像显示到曲面屏幕

    我正在尝试使用 opencv API 来扭曲图像 以便将其显示到曲面屏幕上 我已经浏览了opencv中提供的翘曲apihere http docs opencv org 2 4 modules stitching doc warpers h
  • OpenCV:处理每一帧

    我想使用 OpenCV 编写一个跨平台应用程序进行视频捕获 在所有示例中 我发现来自相机的帧是使用抓取功能进行处理并等待一段时间 我想处理序列中的每一帧 我想定义自己的回调函数 每次当一个新帧准备好处理时都会执行该函数 例如直播对于 Win
  • ECC 导致多光谱图像的图像对齐失败

    我正在尝试将 RGB 图像与 IR 图像 单通道 对齐 目标是创建 4 通道图像 R G B IR 为了做到这一点 我正在使用cv2 findTransformECC如中所述这个非常简洁的指南 https learnopencv com i
  • 从一个 Mat 复制到另一个 Mat 仅接近黑色像素

    I have Mat difference其中有一些黑色像素 或者几乎是黑色像素 gt 如果发生地震 建筑物会移动等 并且Mat current它由具有自然色彩的真实图像组成 我想替换中的像素Mat current这些黑色像素Mat dif
  • 使用 Azure 机器学习检测图像中的符号

    4年前我发帖这个问题 https stackoverflow com q 6999920 411094不幸的是 得到的一些答案超出了我的技能水平 我刚刚参加了一次构建巡演会议 他们在会上谈论了机器学习 这让我想到了使用 ML 来解决我的问题
  • 附加信息:OpenCV:使用 c# 的不同大小的对象

    目前 我的 EmguCV c 代码面临问题 我试图从数据库中识别我的图像 但它不起作用 一旦检测到我的脸 它就会崩溃 然后会出现此错误 附加信息 OpenCV 不同大小的对象 我尝试寻找这个错误 但我一无所知 这是我的代码 Action f
  • OpenCV非旋转图像拼接

    我正在 OpenCV 中进行图像拼接 从不同位置拍摄平面场景的照片并尝试构图全景图 我修改了缝合示例以满足我的需要 openCV 拼接管道的问题是 它假设相机纯粹旋转 但对我来说情况并非如此 当拍摄的照片与场景完全正交时 没有相机旋转 只是
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • Pyinstaller“无法执行脚本 pyi_rth_pkgres”并且缺少软件包

    这是我第一次在这里发布问题 因为我的大部分问题已经被其他人回答了 我正在 python 中开发 GUI 应用程序 并尝试使用 pyinstaller 将其打包到单个文件夹和 exe 中 以便于移植 目前 我使用 Windows 10 和 a
  • 如何使用Java OpenCV

    我正在使用图像处理开始我的最后一年项目 并希望完成类似的事情this http www youtube com watch v EPai5f2sWaA 它是人体和物体检测的结合 我真的很想用 Java 来做 因为我在 C 方面的经验很少 I
  • 从 2 个摄像头捕获(OpenCV、Python)[重复]

    这个问题在这里已经有答案了 所以我试图从 openCV 中的两个摄像头 python 和 windows 7 进行捕获 我用一台相机拍摄的效果很好 你也会注意到我正在对图像做一些时髦的事情 但这并不重要 这是尝试使用两个的代码 import
  • OpenCV 旋转图像而不裁剪澄清

    我想扩展这个主题 参考用户 Lars Schillingmann 给出的这个 SO 问题和接受的答案 在 C 中的 OpenCV 中旋转图像而不裁剪 https stackoverflow com questions 22041699 ro
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • Android API人脸检测与OpenCV/JavaCV人脸检测

    我在 Android 设备上使用了本地 Android 人脸检测 但它似乎很慢 而且我不太确定其可靠性 我还使用了 OpenCV 的人脸检测 但仅限于 PC 而不是 Android 设备 对于 Android 我猜我必须使用 JavaCV
  • 如何将 OpenCV 的测试框架与 CMake 结合使用?

    好像 OpenCV 有一个测试框架 https github com Itseez opencv tree ef91d7e8830c36785f0b6fdbf2045da48413dd76 modules ts include opencv
  • 在OpenCV中将YUV转换为BGR或RGB

    我有一个电视采集卡 其输入内容为 YUV 格式 我在这里看到了与此问题类似的其他帖子 并尝试尝试所述的所有可能的方法 但它们都没有提供清晰的图像 目前最好的结果是 OpenCVcvCvtColor scr dst CV YUV2BGR 函数
  • 从凸点获取角点

    我编写了算法来提取图像中显示的点 它们形成凸形 我知道它们的顺序 如何从这些点中提取角点 顶部 3 个和底部 3 个 我正在使用opencv 如果你已经有了物体的凸包 并且该包包含角点 那么你需要做的就是简化包直到它只有 6 个点 有很多方
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查

随机推荐

  • 物理端口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就可以打开 在网上找了很多资料 七七八八的最终得以解决了 在这整理下 环境