【问题标题】:How to detect Cameras attached to my machine using C#如何使用 C# 检测连接到我的机器的相机
【发布时间】:2013-08-23 16:22:49
【问题描述】:

我能够知道连接到我的 PC 的声音设备和 USB 设备,但无法找到连接到我的机器的摄像头。 使用下面的代码来获取声音设备

Console.WriteLine("Win32 SoundDevices\r\n===============================");
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select * from Win32_SoundDevice");
            foreach (ManagementObject soundDevice in searcher.Get())
            {
                //Console.WriteLine("Device found: {0}\n", soundDevice.ToString());
                Console.WriteLine("Device found: {0}\n", soundDevice.GetPropertyValue("ProductName"));
            }
            Console.WriteLine("Search complete.");

【问题讨论】:

    标签: c# winapi camera


    【解决方案1】:

    这个工具会很有帮助:

    http://www.microsoft.com/en-us/download/details.aspx?id=8572

    我相当肯定没有任何等效字符串可以发送到ManagementObjectSearcher(),专门用于网络摄像头。有“Win32_USBControllerDevice”,您可以确定它是否是网络摄像头。

    更好的解决方案是利用DirectShow.NET

    【讨论】:

      【解决方案2】:

      我编写了一个适合我的解决方案。此方法在我的笔记本电脑上找到了两个 USB 摄像头和一个集成摄像头。

      private static async Task ListAllCamerasAsync()
      {
          ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM win32_PNPEntity WHERE PnPClass='Camera'");
          var collection = await Task.Run(() => { return searcher.Get(); });
          var cameraIndex = 0;
          foreach (ManagementObject cameraDevice in collection)
          {
              Console.WriteLine($"Camera {cameraIndex}: {cameraDevice["Name"]}");
              cameraIndex++;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-10
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多