运维开发网

EMGUCV使用摄像机读取和保存视频

运维开发网 https://www.qedev.com 2022-05-02 16:55 出处:网络
这篇文章主要为大家详细介绍了C#+EmguCV使用摄像头读取、保存视频,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

这篇文章主要为大家详细介绍了C#+EmguCV使用摄像头读取、保存视频,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文分享C#+EmguCV使用摄像头读取保存视频的具体代码,供大家参考。具体内容如下

在Emgucv中调用摄像机需要VideoCapture类。

这个类可以通过四种方式重载


1.如果未写入参数,初始化期间将调用默认摄像机。

2.int类型的数字,表示摄像机的索引。摄像机将根据索引进行初始化。

3.一个字符串,表示文件名或视频流名。视频文件或视频流被初始化。

4.CaptureType的枚举


这个列举的内容很多,这里就不赘述了。

创建一个新的控制台应用程序来读取和保存视频。代码如下所示

class Program? ? {? ? ? ? static void Main(string[] args)? ? ? ? {? ? ? ? ? ? show();? ? ? ? }?? ? ? ? private static void show()? ? ? ? {? ? ? ? ? ? //VideoCapture cap = new VideoCapture("AVSEQ02.avi");? ? ? ? ? ? //VideoCapture cap = new VideoCapture(CaptureType.Any);? ? ? ? ? ? VideoCapture cap = new VideoCapture();? ? ? ? ? ? VideoWriter writer = new VideoWriter("save.avi", 20, new Size(640, 480), true);? ? ? ? ? ? if (!cap.IsOpened)? ? ? ? ? ? {? ? ? ? ? ? ? ? Console.WriteLine("打开失败");? ? ? ? ? ? ? ? return;? ? ? ? ? ? }? ? ? ? ? ? Mat mat = new Mat();? ? ? ? ? ? while (true)? ? ? ? ? ? {? ? ? ? ? ? ? ? cap.Read(mat);? ? ? ? ? ? ? ? if (mat.IsEmpty)? ? ? ? ? ? ? ? {? ? ? ? ? ? ? ? ? ? Console.WriteLine("读取完毕");? ? ? ? ? ? ? ? ? ? break;? ? ? ? ? ? ? ? }? ? ? ? ? ? ? ? CvInvoke.Imshow("video", mat);? ? ? ? ? ? ? ? writer.Write(mat);? ? ? ? ? ? ? ? CvInvoke.WaitKey(30);? ? ? ? ? ? }? ? ? ? ? ? CvInvoke.WaitKey(0);?? ? ? ? }? ? }

这里使用VideoCapture的Read()方法读取视频的每一帧。保存在Mat对象中。和CvInvoke。Imshow()出来了。然后使用VideoWriter的Write方法将每一帧的图像保存为视频。

这里需要注意的一点是:你需要在循环中停留30毫秒,否则视频不会显示。CvInvoke。wait key(30);

运行程序后,可以看到摄像头读取的视频已经保存。


这就是本文的全部内容。希望对大家的学习有帮助,也希望大家能支持一下搜源网。


0

精彩评论

暂无评论...
验证码 换一张
取 消