Visual Studio C# VideoCapture

Lau*_*ran 1 opencv visual-studio emgucv

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

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

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

很抱歉这个超长的故事,但有人可以帮助我。

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

从那时起,我想对视频源执行图像处理并显示另一个带有编辑过的视频源的图片框。但这一切都是为了以后!

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

谢谢

小智 5

使用 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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 对于和我有同样问题的其他人。我还在代码顶部添加了“使用 Emgu.CV”。我添加了对 Emgu.CV.World.dll 和 System.ServiceModel.dll 文件的引用 (2认同)