Visual Studio C#VideoCapture

时间:2018-03-15 13:17:43

标签: visual-studio opencv emgucv

前段时间我在c ++中写了一些很酷的视觉资料。后来我发现我的代码需要添加到用c#编写的现有可执行文件中。因此,我想在c#中编写相同的视觉算法,以便我的代码可以作为可执行文件运行。

我已经下载了Emgu 3.3,我使用OpenCV 3.4和Visual Studio 2017.C#对我来说是新的。我做了你制作表单的教程,给它一些按钮并为按钮分配功能。一切都运转正常。

然后我开始寻找如何将录像带从我的网络摄像头导入到我的表单中的方法。所以我只想在我的表单中从我的网络摄像头获取实时信息。经过3天的挫折之后,我对所有参考资料都感到困惑。我需要哪一个我不需要哪一个。我发现并尝试实现的每个代码似乎都提出了一个不同的问题。而我想要的只是一个带有相机输入的干净屏幕。

对于这个超级长篇故事感到抱歉,但有人可以帮助我。

我知道我需要创建一个图片框。我只想从我的网络摄像头获取VideoCapture并将其直接发送到图片框。作为开始当然。从那以后,我可以继续计算出来,但我需要基础。

从那时起,我想在录像带上进行图像处理,并用编辑过的录像带显示另一个图片框。但这一切都是为了以后的事情!

我希望我的问题不要太模糊,因为我也没有提供一些代码..

谢谢

1 个答案:

答案 0 :(得分:4)

使用Emgu 3.3的VideoCapture在WinForm中显示您的网络摄像头的示例如下:

public partial class Form1 : Form
{
    VideoCapture _capture;
    private Mat _frame;

    private void ProcessFrame(object sender, EventArgs e)
    {
        if (_capture != null && _capture.Ptr != IntPtr.Zero)
        {
            _capture.Retrieve(_frame, 0);
            pictureBox1.Image = _frame.Bitmap;  
        }
    }

    public Form1()
    {
        InitializeComponent();

        _capture = new VideoCapture(0);


        _capture.ImageGrabbed += ProcessFrame;
        _frame = new Mat();
        if (_capture != null)
        {
            try
            {
                _capture.Start();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

}