2

我可以让 AForge 使用 USB 网络摄像头,但我有一个可以连接多个摄像头的视频卡。如何让 AForge 与视频卡一起工作?

我的问题是我无法将VideoInputDeviceto 设置为工作视频输入。

代码是这样的:

void init(){
    FilterInfoCollection videoCaptureDevice =
        new FilterInfoCollection(FilterCategory.VideoInputDevice);

    VideoCaptureDevice finalVideo =
        new VideoCaptureDevice(videoCaptureDevice[0].MonikerString);

    finalVideo.NewFrame += new NewFrameEventHandler(finalVideo_NewFrame);

    finalVideo.Start();
}

public void finalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
    Bitmap temp = (Bitmap)eventArgs.Frame.Clone();
    pictureBox1.Image = temp;

}

我也试过:

finalVideo = new VideoCaptureDevice();
finalVideo.CrossbarVideoInput = VideoInput.Default;

它也没有工作。

非常感谢任何帮助。

4

2 回答 2

1

在你的代码中

VideoCaptureDevice finalVideo = new VideoCaptureDevice(videoCaptureDevice[0].MonikerString);

注册第一个设备 [0]
我假设如果您将 [1] 放在那里,您将获得第二个设备。

还要注意这一行

  finalVideo.NewFrame += new NewFrameEventHandler(finalVideo_NewFrame);

在那里,您定义了当为该特定相机接收到新图像帧时应该触发的事件名称(finalvide_Newframe)。最简单的方法是注册两个不同的事件。所以每个相机 [0] 和 [1] 都会接收到自己的事件来显示它。

这里有一些额外的代码提示可能对您有所帮助,我用它来选择相机,这只是一个想法,如果您有多个外部相机(制作 2 个组合框)但不想使用例如笔记本电脑的内部凸轮。

VideoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            foreach (FilterInfo VideoCaptureDevice in VideoCaptureDevices)
            {
                comboBox1.Items.Add(VideoCaptureDevice.Name);
            } // to get all your devices inside a combo box;

你可以这样做

 FinalVideo = new VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString);
于 2012-11-28T23:03:39.573 回答
0

当您下载整个软件包时,请查看 aforge 示例,有一个演示快照制作器,可与多个相机一起使用。

于 2015-02-13T12:55:41.130 回答