这篇文章主要为大家详细介绍了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);
运行程序后,可以看到摄像头读取的视频已经保存。
这就是本文的全部内容。希望对大家的学习有帮助,也希望大家能支持一下搜源网。
精彩评论