opencv获取多个摄像头名字和编号

2023-11-08

因为项目需要,利用opencv读取多个摄像头,但没法确定摄像头的编号。查看opencv的源码,摄像头的id主要利用了listDevices这个函数,自己把这个函数单独提取出来,根据vector<>中的排序,得到摄像机id。

int listDevices(vector<string>& list){

	//COM Library Intialization
	//comInit();

	//if (!silent)printf("\nVIDEOINPUT SPY MODE!\n\n");


	ICreateDevEnum *pDevEnum = NULL;
	IEnumMoniker *pEnum = NULL;
	int deviceCounter = 0;
	CoInitialize(NULL);
	HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL,
		CLSCTX_INPROC_SERVER, IID_ICreateDevEnum,
		reinterpret_cast<void**>(&pDevEnum));


	if (SUCCEEDED(hr))
	{
		// Create an enumerator for the video capture category.
		hr = pDevEnum->CreateClassEnumerator(
			CLSID_VideoInputDeviceCategory,
			&pEnum, 0);

		if (hr == S_OK){

			//if (!silent)printf("SETUP: Looking For Capture Devices\n");
			IMoniker *pMoniker = NULL;

			while (pEnum->Next(1, &pMoniker, NULL) == S_OK){

				IPropertyBag *pPropBag;
				hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag,
					(void**)(&pPropBag));

				if (FAILED(hr)){
					pMoniker->Release();
					continue;  // Skip this one, maybe the next one will work.
				}


				// Find the description or friendly name.
				VARIANT varName;
				VariantInit(&varName);
				hr = pPropBag->Read(L"Description", &varName, 0);

				if (FAILED(hr)) hr = pPropBag->Read(L"FriendlyName", &varName, 0);

				if (SUCCEEDED(hr)){

					hr = pPropBag->Read(L"FriendlyName", &varName, 0);

					int count = 0;
					char tmp[255] = {0};
					//int maxLen = sizeof(deviceNames[0]) / sizeof(deviceNames[0][0]) - 2;
					while (varName.bstrVal[count] != 0x00 && count < 255) {
						tmp[count] = (char)varName.bstrVal[count];
						count++;
					}
					list.push_back(tmp);
					//deviceNames[deviceCounter][count] = 0;

					//if (!silent)printf("SETUP: %i) %s \n", deviceCounter, deviceNames[deviceCounter]);
				}

				pPropBag->Release();
				pPropBag = NULL;

				pMoniker->Release();
				pMoniker = NULL;

				deviceCounter++;
			}

			pDevEnum->Release();
			pDevEnum = NULL;

			pEnum->Release();
			pEnum = NULL;
		}

		//if (!silent)printf("SETUP: %i Device(s) found\n\n", deviceCounter);
	}

	//comUnInit();

	return deviceCounter;
}

结果如下:

根据这个编号,就可以比较灵活的选择摄像机了。方法比较笨,勉强可用。

测试源码

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

opencv获取多个摄像头名字和编号 的相关文章

  • Opencv - Features2D + 单应性不正确的结果

    我在将检测到的物体的轮廓放置在正确的位置时遇到了一些问题 就好像坐标位于错误的位置一样 我将粗麻布设置为 2000 并过滤了小于最小距离 3 倍的匹配 任何帮助 将不胜感激 运行匹配和单应性的结果 代码示例如下 public static
  • 在OpenCV Python中编写4通道以上图像

    这对我来说是一个持续的挑战 我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像 到目前为止我的代码如下 import cv2 import numpy as np im1 cv2 imread im1
  • 变形:Opencv 使用 Visual Studio 将图像显示到曲面屏幕

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

    在使用 C 的 OpenCV 中 有没有办法删除 mouseHandler int event int x int y int flags void param 通过函数添加到窗口 image window cv setMouseCallb
  • 如何使用 Python 3 在 OpenCV 3 上正确加载 cv2.KeyPoint 和描述符?

    有一天 我不得不恢复一个使用 OpenCV 3 和 Python 2 7 的旧项目 在此代码中 要加载 cv2 KeyPoint 我执行以下操作 import numpy as np import cPickle import cv2 ke
  • 如何使用 python cv2 api 将 xy 点格式化为 unactorPoints?

    我在格式化要传递给 unactorPoints 的 x y 点列表时遇到问题 opencv 2 4 1 该错误消息是 C 特定的 并抱怨点数组不是 CV 32FC2 类型 我不应该能够传入 Nx2 numpy 数组吗 import cv2
  • 使用 openCV 锐化视频图像

    我想使用 OpenCV 锐化我的图像 我在网上查看了一个示例 该示例正在对灰度图像执行锐化 我尝试了它 它工作得很好 然而 我现在尝试做同样的事情 但使用 RGB 颜色 所以我分别在三个通道上执行相同的功能 但它没有给我任何结果 图像与原始
  • 附加信息:OpenCV:使用 c# 的不同大小的对象

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

    我有一个真实 物理的棍子 上面连接有红外摄像头和一些红外 LED 它们形成了我正在使用的模式 以便使虚拟棍子以与物理棍子相同的方式移动 为此 我在 Python 中使用 OpenCV 并将由solvePnP 计算的旋转和平移向量发送到 Un
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • Pyinstaller“无法执行脚本 pyi_rth_pkgres”并且缺少软件包

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

    我有一个浮点指针 数组 它代表一个图像 它的元素计数和索引具有宽度 高度 图像不像矩阵 其原点位于左上角 相反 它的原点位于左下角 就像在笛卡尔坐标系中一样 达到最大宽度后 它从左侧开始下一行 所以我想有效地将 这个数组转换为二维矩阵 可选
  • Haar训练时正样本和负样本使用多少张图片?

    我已经阅读了大量有关 Haar 训练的内容 但我不清楚应该为正样本集和负样本集使用多少图像 我看到建议使用很多图像 有些人推荐数千张 我也不清楚正负样本图像的数量是否应该相同 这是关于 Haar 训练的最佳教程 你试过这个吗 http no
  • 如何在 OpenCV 中将 Float Mat 写入文件

    我有一个矩阵 Mat B 480 640 CV 32FC1 包含浮点值 我想将此矩阵写入一个可以打开的文件Notepad https en wikipedia org wiki Windows Notepad or 微软Word https
  • 使用 OpenCV 和 Python 叠加两个图像而不丢失颜色强度

    如何叠加两个图像而不损失两个图像的颜色强度 我有图像1和图像2 2 我尝试使用 0 5 alpha 和 beta 但它给我的合并图像的颜色强度只有一半 dst cv2 addWeighted img1 0 5 img2 0 5 0 但是当我
  • 如何确定透视变换后的点在新图像平面中的位置?

    我使用 OpenCV Python Numpy 图像中有三个点 我知道这些点的确切位置 P1 P2 N1 我要将图像转换为另一个视图 例如 我将透视图转换为侧视图 如果这样做 我将无法获得图像平面中这三个点的确切位置 我应该以一种可以获得这
  • 如何平滑循环列向量

    这是一个 OpenCV2 问题 我有一个矩阵代表closed空间曲线 cv Mat
  • 如何使用Android opencv使图像的白色部分透明

    我无法链接超过 2 个网址 因此我将我的照片发布到此博客 请在这里查看我的问题 http blog naver com mail1001 220650041897 http blog naver com mail1001 220650041
  • 如何将 Opencv VideoWriter 与 GStreamer 结合使用?

    我正在尝试使用 Opencv VideoWriter 传输 h264 流 以使用 VideoCapture 将其传输到网络上的另一台电脑上 但是 我被困在 VideoWriter 上 执行此代码会返回错误 并且 out isOpened 始

随机推荐

  • 怎么把图片转换成表格?这三种办法值得收藏

    不知道大家有没有遇到过 领导或者同事需要你帮忙处理excel 但却是用截图的方式发送过来的 如果我们根据图片重新制作一份excel 实在是有些费时费力 其实我们可以使用一些软件 就能够实现图片转excel 那怎么把手机图片转excel表格呢
  • 2022年陕西省中等职业学校技能大赛网络搭建与应用赛项《 服务器配置及应用竞赛报告单 》

    2022年陕西省中等职业学校技能大赛 网络搭建与应用赛项 服务器配置及应用竞赛报告单 网络搭建与应用赛项执委会及专家组 2022年5月20月
  • 爬虫 — Js 逆向案例三凡科网登录

    目标网站 https i fkw com ta 3 需求 找到密码加密的过程 进行加密 案例分析 1 抓到向服务器发请求的数据包 输入错误的账号和密码 测试密码可以输入123456 如果发现加密后的密码为 e10adc3949ba59abb
  • 顺序表中的查找,插入,删除操作

    已知一个顺序表L 其中的元素递增有序排列 1 查找第一个值等于e的元素 并返回其下标 int findElem Sqlist L int e int i for i 0 i
  • 闭环系统的零极点图判定稳定性_控制系统的稳性分析.ppt

    控制系统的稳性分析 当特征方程的根均为负实根或实部为负的共轭复根时 系统稳定 先假设K的大致范围 利用roots 函数计算这些K值下特征方程的根 然后判断根的位置以确定系统稳定时K的取值范围 程序如下 k 0 0 01 100 for in
  • 软件设计模块之间7种耦合关系

    一般来说 模块之间的耦合有七种类型 1 根据耦合性从低到高为非直接耦合 数据耦合 标记耦合 控制耦合 外部耦合 公共耦合和内容耦合 2 两个模块之间没有直接关系 它们之间的联系完全是通过主模块的控制和调用实现的 这种耦合为 非直接耦合 3
  • 抖音快手短视频推广方式

    之前的快手短视频主要集中在三四线城市以及农村等消费力不强的用户群体上 没能有力的抓住主流用户的眼光 如今在一二线城市大放异彩的抖音短视频让厂商们再也无法无视短视频对于用户的吸引力 有了短视频这一全新渠道 怎么更为有效的利用渠道成了各级厂商新
  • Ubuntu16.04 + Titan XP + cuda8.0 + cudnn5.1 + opencv3.3.0 + caffe

    1 安装Ubuntu16 04 制作一个启动盘之后BIOS切换到U盘启动就好辣 跟着提示走 需要注意的是安装系统的时候不能插网线 否则界面会在选择时区那里一直循环 2 NVIDIA显卡驱动 如果直接添加源然后sudo apt get ins
  • 17种安全native反调试收集

    这个资料是我去年刚接触安卓安全时整理的 90 的反调试都有 基本收集全了 实际还少3种 大部分方法是收集的网络上的资料 来自于 1 Anti debugging Skills in APK wooyun 2 Android逃逸技术汇编 36
  • poj 3278 Catch That Cow bfs+注意范围

    题 错了好几次 分别是 RE 运行时错误 因为访问了下标为 1的数组 定位在搜索 1方向的条件 MLE 内存超限 q push没有筛选 重复的都放进去就会MLE WA 忘记多组样例了 注意 为了防止2的数字太大 要有if temp n lt
  • PHPStorm更改为Apache服务端口,及修改默认的网站目录为PHPStorm的工作目录

    由于最近在学习PHP 当提交表单表单时 总是无法正确找到对应页面 搜索了半天 有人说不要用它内置的服务器 也就是将默认的服务器改为Apache服务器的端口 1 更改为Apache的服务器端口 File Settings 选择Build Ex
  • Linux Mint Qt5 开发环境搭建

    这篇文章原本是我的老师要求写的 他老人家要求要百分之百详细 所以步骤都写的非常详细 适合新手参考 1 下载 Qt5 离线安装包 下载地址 http www qt io download open source 进入后 请注意页面最下方有个
  • DB2 静态 SQL 和动态 SQL 的比较与实践

    转自 http www ibm com developerworks cn data library techarticles dm 0910yangxh index html ca drs cn 1026 引言 SQL 语言作为标准的查询
  • Django(三)接口自动化平台HttpRunnerManager(1)本地部署

    前言 本章主要讲述HttpRunnerManager本地部署 我这里本地是Windows 所以我就在windows下面搭建了 环境 mysql 5 7 django 2 0 3 python 3 6 8 一 HttpRunnerManage
  • 解决phpstudy mysql 启动不了的问题

    1 端口监测 查看3306 的端口是否被占用 如占用 停止进程 2 服务没有启动 因为学习python 我把phpstudy的mysql升级到了mysql8 0 sc delete mysql 删除已经注册的mysql服务 期间升级mysq
  • 微软官网操作系统下载方法

    首先 打开百度官网 https www baidu com 然后 在输入框中输入 微软官网 下载win7 后回车即可 这里以下载win7为例其他操作系统下载方法与其一致 接着 在页面中寻找网站开头地址为微软官网地址 https www mi
  • 正高职称相当于公务员的什么级别?为什么有人说评上正高就值了

    事业编分为管理岗和专技岗 正高级职称就是专技岗的一种 专技岗分为初级岗 中级岗和高级岗 其中高级职称又分为副高和正高 正高级职称相当于公务员中的正处级 也就是大家常说的正县级 正高级职称分为四级 正高一级 正高二级 正高三级和正高四级 正高
  • Kaldi HCLG 深入理解

    1 相关部分包含的主要任务 1 1 WFST Key Concepts determinization minimization composition equivalent epsilon free functional on deman
  • 【1】Midjourney新手必读

    Midjourney官网网站 https www midjourney com 问题一 Midjourney是什么 Midjourney 是 AI 生成算图工具 输入文字就会自动产生图像 目前架设在Discord频道上 问题二 Discor
  • opencv获取多个摄像头名字和编号

    因为项目需要 利用opencv读取多个摄像头 但没法确定摄像头的编号 查看opencv的源码 摄像头的id主要利用了listDevices这个函数 自己把这个函数单独提取出来 根据vector lt gt 中的排序 得到摄像机id int