获取摄像头个数和名字

在使用Qt的QCameraInfo::availableCameras()获取摄像头时遇到问题,返回值始终为0,而本机实际有5个摄像头。尝试使用Qt自带示例能正常获取。为解决问题,转向使用DirectShow,并从OpenCV相关教程中提取获取摄像头数量和名称的代码,解决了编译问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用qt的QCameraInfo::availableCameras()一直获取到的摄像头个数都是0(本机上共有5个摄像头),使用qt自带的例子获取摄像头列表又获取得到,不知哪里出了问题。无奈只能网上查找。以下网址使用directshow获取摄像头个数和摄像头名字:里面的代码可下载来使用,只是里面有个包含的头文件#include <cxcore.h>必须工程包含opencv的目录才能打开,否则编译不通过。但是单单获取摄像头个数和名称不需要用到这里面的这么多信息,因此单独取了这2个函数出来,如下关键代码处。

http://wiki.opencv.org.cn/index.php/使用DirectShow采集图像#.E5.8F.AF.E8.83.BD.E5.AD.98.E5.9C.A8.E7.9A.84.E7.BC.BA.E9.99.B7


关键代码为:

#pragma comment(lib,"Strmiids.lib") 
int CameraCount()
{
	int count = 0;
	CoInitialize(NULL);

	// enumerate all video capture devices
	CComPtr<ICreateDevEnum> pCreateDevEnum;
	HRESULT hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER, IID_ICreateDevEnum, (void**)&pCreateDevEnum
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值