【问题标题】:how to detect front and back camera in window tablet in winforms C#如何在winforms C#中检测窗口平板电脑中的前置和后置摄像头
【发布时间】:2016-02-10 08:46:35
【问题描述】:

我在 winforms 中使用 aforge 进行视频录制。我想在窗口平板电脑中录制视频(前置和后置摄像头)。我能够找到视频捕获设备列表,但无法确定哪个是前置摄像头或后置摄像头。

我使用的命名空间:

using AForge.Video;
using AForge.Video.DirectShow;

我已经看到了我寻找视频捕获设备 sn-p 的代码:

public VideoCaptureDevice cam = null;
public FilterInfoCollection usbCams;

...

usbCams = new FilterInfoCollection(FilterCategory.VideoInputDevice);

if (usbCams.Count == 1)
{
    cam = new VideoCaptureDevice(usbCams[0].MonikerString);
}
else if (usbCams.Count == 2)
{
    cam = new VideoCaptureDevice(usbCams[1].MonikerString);
}

cam.NewFrame += new NewFrameEventHandler(cam_NewFrame);

cam.Start();

...

private void cam_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
    ImgContainer.Image = bitmap;
}

我在 iball 和 lenovo yoga 8 等不同设备上进行了测试。我发现一个原因是在 Iball 平板电脑中返回第一个前置摄像头名称和第二个后置摄像头,但在联想平板电脑中返回第一个后置摄像头和第二个前置摄像头。我完全糊涂了。如何识别前后摄像头?

【问题讨论】:

    标签: c# winforms camera aforge front-camera


    【解决方案1】:

    usbCams 是您机器中所有可用摄像头设备的列表。 有了这个:

    if (usbCams.Count == 1)
    {
        cam = new VideoCaptureDevice(usbCams[0].MonikerString);
    }
    else if (usbCams.Count == 2)
    {
        cam = new VideoCaptureDevice(usbCams[1].MonikerString);
    }
    

    您正在做的是,如果只有一个设备使用第一个设备,如果有两个设备使用第二个设备,但不确定第二个设备是后部还是前部。 我在我的应用程序中所做的是使用选择器并用所有可用设备填充它,然后让用户选择。 比如:

    List<string> camaras = new List<string>();
    foreach (FilterInfo item in usbCams)
    {
        camaras.Add(item.Name);
    }
    comboBox.ItemsSource = camaras;
    

    当组合框改变选择时

    cam.Stop();
    cam= new VideoCaptureDevice(LoaclWebCamsCollection[comboBox.SelectedIndex].MonikerString);
    cam.NewFrame += new NewFrameEventHandler(cam_NewFrame);
    cam.Start();
    

    我现在没有足够的设备来测试凸轮的顺序,但可能是按名称设备排序,或者按驱动程序安装优先级或其他排序。

    【讨论】:

      【解决方案2】:

      一个技巧是检查功能并将最高分辨率的相机设置为后置相机。如果质量有差异,通常比后置摄像头更好。

      这并不总是有效,例如 Surface Pro 1 有 2 个分辨率相同的摄像头。

      【讨论】:

        猜你喜欢
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-03
        • 2014-01-26
        • 2012-11-24
        • 1970-01-01
        相关资源
        最近更新 更多