资源简介
一个小工具用来检测电脑设备中摄像头的ID,其中有生成好的exe,点击运行即可,还有源码

代码片段和文件信息
#include
#include
#include “windows.h“
#include “dshow.h“
#include
#pragma comment(lib “strmiids.lib“)
#pragma comment(lib “quartz.lib“)
using namespace cv;
using namespace std;
int listDevices(vector& list) {
//COM Library Initialization
//comInit();
//if (!silent) DebugPrintOut(“\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(&pDevEnum));
if (SUCCEEDED(hr))
{
// Create an enumerator for the video capture category.
hr = pDevEnum->CreateClassEnumerator(
CLSID_VideoInputDeviceCategory
&pEnum 0);
if (hr == S_OK) {
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) DebugPrintOut(“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) DebugPrintOut(“SETUP: %i Device(s) found\n\n“ deviceCounter);
}
//comUnInit();
return deviceCounter;
}
int main()
{
vector list;
listDevices(list);
cout << “dev_size = “ << list.size() << endl;
for (int i = 0; i {
cout << “device lists: “ << list[i] <<“ i = “< }
getchar();
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 32775680 2019-02-15 11:02 发现摄像头设备ID\FindVideoDevice.exe
文件 2648 2019-02-15 11:23 发现摄像头设备ID\mainTest.cpp
文件 119 2019-02-15 11:22 发现摄像头设备ID\说明.txt
目录 0 2019-02-15 11:23 发现摄像头设备ID
----------- --------- ---------- ----- ----
32778447 4
- 上一篇:Dijkstra算法最短路的可视化实现
- 下一篇:FX2N-1PG(中文).pdf
相关资源
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- opencv环境配置
- win10 64位下编译的opencv4.5.5库,opencv
- NVIDIAOpticalFlowSDK-79c6cee80a2df9a196f20afd6
- opencv_contrib-3.4.0.zip
- opencv2.4.9源码分析——SIFT
- 用两个摄像头实现,双目标定,双目
- opencv_traincascade训练分类器,手势识别
- opencv3.0交叉编译用parallel.cpp
- 基于opencv的图像识别识别图像中的色
- 基于openCV的识别特定颜色区域
- 基于OpenCV的分水岭算法实现
- QT+opencv+OCR 身份证号码,银行卡号识别
- opencv视频特定颜色区域识别
- 把RGB转换为HSV和HSI然后根据黄色和蓝
- opencv视觉测距
- 基于Qt和opencv的身份证号码识别系统
- opencv_ffmpeg249.dll
- SfM稀疏三维点云重建--完整工程文件
- 基于opencv的数人头程序源代码
- 利用OpenCV中的Stitcher类实现全景图像拼
- opencv实现的sift算法源码,包含了图像
- openCV 上的小波变换
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
评论
共有 条评论