前一段时间,我用c++编写了一些很酷的视觉内容。后来我发现我的代码需要添加到用C#编写的现有可执行文件中。因此,我想用C#编写相同的视觉算法,以便我的代码可以作为可执行文件运行。
我已经下载了Emgu 3.3,并使用OpenCV 3.4和Visual Studio2017。C#对我来说是新的。我在教程中制作了表单,为它提供了一些按钮,并为按钮分配了功能。一切都很好。
然后,我开始寻找有关如何将网络摄像头中的视频供稿导入表单的方法。因此,我只想从表单中的网络摄像头获取实时供稿。经过三天的挫折,我对所有参考文献都感到困惑。我需要哪一个我不需要。我找到并尝试实现的每个代码似乎都给出了不同的问题。而我所想要的只是我的相机提要的一个干净的屏幕。
非常抱歉,这个漫长的故事,但是有人可以帮助我。
我知道我需要创建一个图片框。我只想从我的网络摄像头获取一个VideoCapture,并将其直接发送到图片框。作为开始当然。从那里开始,我可以继续寻找东西,但是我需要基础。
从那以后,我想对视频源执行图像处理,并显示另一个带有已编辑视频源的图片框。但这就是所有以后的事情!
我希望我的问题不太模糊,因为我也没有提供一些代码。
谢谢
最佳答案
使用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);
}
}
}
}