• 大小: 14.08MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-01
  • 语言: C/C++
  • 标签: c++  opencv  摄像机id  

资源简介

c++,得到opencv打开摄像头id号及名称

资源截图

代码片段和文件信息

#include
#include “strmif.h“
#include 
#include
#include
#include “windows.h“
#include “tchar.h“
#include 
#include 

#include 


#pragma comment(lib “setupapi.lib“)

using namespace std;

#define VI_MAX_CAMERAS  20

DEFINE_GUID(CLSID_SystemDeviceEnum 0x62be5d10 0x60eb 0x11d0 0xbd 0x3b 0x00 0xa0 0xc9 0x11 0xce 0x86);
DEFINE_GUID(CLSID_VideoInputDeviceCategory 0x860bb310 0x5d01 0x11d0 0xbd 0x3b 0x00 0xa0 0xc9 0x11 0xce 0x86);
DEFINE_GUID(IID_ICreateDevEnum 0x29840822 0x5b84 0x11d0 0xbd 0x3b 0x00 0xa0 0xc9 0x11 0xce 0x86);



//char deviceNames[VI_MAX_CAMERAS][255];



int listDevices(vector& 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(&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;
}


int imageDeviceEnum(vector& cameraName)
{
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i;
int num = 0;

// 得到所有设备 HDEVINFO      
hDevInfo = SetupDiGe

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-07-05 18:58  CameraEnum\
     目录           0  2017-06-26 10:46  CameraEnum\CameraEnum\
     文件    42663936  2017-07-05 18:58  CameraEnum\CameraEnum.sdf
     文件         976  2017-06-21 10:27  CameraEnum\CameraEnum.sln
     文件       28160  2017-07-05 18:58  CameraEnum\CameraEnum.v12.suo
     文件        8602  2017-06-26 10:46  CameraEnum\CameraEnum\cam.cpp
     文件        4090  2017-06-21 17:25  CameraEnum\CameraEnum\CameraEnum.vcxproj
     文件         944  2017-06-21 10:27  CameraEnum\CameraEnum\CameraEnum.vcxproj.filters
     文件         165  2017-06-21 17:08  CameraEnum\CameraEnum\CameraEnum.vcxproj.user
     目录           0  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\
     文件      734907  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\cam.obj
     文件        1437  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.log
     目录           0  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\
     文件         156  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\CameraEnum.lastbuildstate
     文件         576  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\cl.command.1.tlog
     文件       31524  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\CL.read.1.tlog
     文件         392  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\CL.write.1.tlog
     文件        1062  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\link.command.1.tlog
     文件        3058  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\link.read.1.tlog
     文件         372  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\CameraEnum.tlog\link.write.1.tlog
     文件      879616  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\vc120.idb
     文件      913408  2017-06-26 10:46  CameraEnum\CameraEnum\Debug\vc120.pdb
     目录           0  2017-06-26 10:46  CameraEnum\Debug\
     文件      147456  2017-06-26 10:46  CameraEnum\Debug\CameraEnum.exe
     文件      565584  2017-06-26 10:46  CameraEnum\Debug\CameraEnum.ilk
     文件     2494464  2017-06-26 10:46  CameraEnum\Debug\CameraEnum.pdb

评论

共有 条评论