Visual Studio C# 视频捕获
Posted
技术标签:
【中文标题】Visual Studio C# 视频捕获【英文标题】:Visual Studio C# VideoCapture 【发布时间】:2018-08-24 07:50:09 【问题描述】:不久前,我用 C++ 写了一些很酷的视觉内容。后来我发现我的代码需要添加到用 c# 编写的现有可执行文件中。因此,我想在 c# 中编写相同的视觉算法,以便我的代码可以作为可执行文件运行。
我已下载 Emgu 3.3,并使用 OpenCV 3.4 和 Visual Studio 2017。C# 对我来说是新的。我完成了制作表单的教程,给它一些按钮并为按钮分配功能。一切都很好。
然后我开始寻找如何将视频源从我的网络摄像头导入到我的表单中的方法。所以我只想以我的形式从我的网络摄像头获取实时信息。经过 3 天的挫折后,我对所有参考资料感到完全困惑。我需要哪一个我不需要。我找到并尝试实施的每个代码似乎都给出了不同的问题。而我想要的只是一个干净的屏幕,里面有我的摄像头。
很抱歉这个超长的故事,但有人可以帮助我。
我知道我需要创建一个图片框。我只想从我的网络摄像头获取 VideoCapture 并将其直接发送到图片框。当然,就像开始一样。从那以后,我可以继续解决问题,但我需要基础。
从那里开始,我想对视频源执行图像处理,并显示另一个带有编辑后的视频源的图片框。不过这些都是以后的事了!
我希望我的问题不是太含糊,因为我也没有提供一些代码..
谢谢
【问题讨论】:
“网络摄像头”和“视频源”有点模糊。它是 USB 还是网络摄像头?如果网络:支持哪些协议? RTSP/RTP?支持哪些编解码器? ... 这是我笔记本上的网络摄像头,也可以使用usb网络摄像头 如果我的问题非常愚蠢并且有一个非常适合这个问题的教程,那么我当然愿意做这个教程。我想我先自己试一试,然后在这里问 呃,不,这不是超级愚蠢。这实际上很有趣。我找到了这些,也许你可以从中得到一些东西:codeproject.com/Questions/569093/…,***.com/questions/342774/… 甚至还有 emgu 的东西:***.com/questions/18727747/… 【参考方案1】:使用 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);
【讨论】:
这个非常适合我作为继续我的代码的开始!谢谢;) 对于和我有同样问题的其他人。我还在代码顶部添加了“使用 Emgu.CV”。我添加了对 Emgu.CV.World.dll 和 System.ServiceModel.dll 文件的引用 @Lauran 为什么需要添加对那些 DLL 的引用?以上是关于Visual Studio C# 视频捕获的主要内容,如果未能解决你的问题,请参考以下文章
如何从使用directx c# visual studio播放的视频中获取和处理每一帧(位图图像)
即使在 C# 代码中处理,InvalidOperationException 也会导致 Visual Studio 中断