如何从我的 PC C# 获取相机设备列表

本文关键字:相机 列表 获取 我的 PC | 更新日期: 2023-09-27 18:36:01

如何获取使用 USB(网络摄像头)连接到我的 PC 的所有相机设备的列表,以及笔记本电脑具有的内置相机。

如何从我的 PC C# 获取相机设备列表

没有任何外部库的简单解决方案是使用 WMI

添加using System.Management;,然后:

public static List<string> GetAllConnectedCameras()
{
    var cameraNames = new List<string>();
    using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Image' OR PNPClass = 'Camera')"))
    {
        foreach (var device in searcher.Get())
        {
            cameraNames.Add(device["Caption"].ToString());
        }
    }
    return cameraNames;
}

我以前做过 - 使用 http://directshownet.sourceforge.net/给你一个体面的 .net 接口到 DirectShow,然后你可以使用以下代码:

  DsDevice[] captureDevices;
  // Get the set of directshow devices that are video inputs.
  captureDevices = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);    
  for (int idx = 0; idx < captureDevices.Length; idx++)
  {
    // Do something with the device here...
  }

希望它能帮助其他用户

//using System.Management;
    public void GetCameras()
    {
        List<string> cameras = new List<string>();
        var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE (PNPClass = 'Image' OR PNPClass = 'Camera')");
        
        foreach (var device in searcher.Get())
        {
            cameras.Add($"Device: {device["PNPClass"]} / {device["Caption"]} / {device["Description"]} / {device["Manufacturer"]}");
        }
        
        File.WriteAllLines(@"C:'out'cameras.txt", cameras);
    }