Since I'm not good with C++, neither with low level Windows libraries, I'd like to ask you two questions, please.
public static List<CameraDevice> GetAllConnectedCameras()
{
var cameras = new List<CameraDevice>();
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Camera')"))
{
foreach (var device in searcher.Get())
{
cameras.Add(new CameraDevice()
{
Name = device["Caption"].ToString(),
Status = device["Status"].ToString(),
DeviceId = device["DeviceID"].ToString()
});
}
}
cameras = cameras.OrderBy(c => c.DeviceId).ToList();
for (int i = 0; i < cameras.Count; ++i)
cameras[i].OpenCvId = i;
return cameras;
}
public class CameraDevice
{
public int OpenCvId { get; set; }
public string Name { get; set; }
public string DeviceId { get; set; }
public string Status { get; set; }
}
== VIDEO DEVICE (id:0) ==
Name: HD Pro Webcam C920
Path: \\?\usb#vid_046d&pid_082d&mi_00#7&3561b19d&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global
== VIDEO DEVICE (id:1) ==
Name: FLIR USB Video
Path: \\?\usb#vid_09cb&pid_1007&mi_00#6&1e15415f&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global