OpenCvSharp 学习一: 播放视频

 这段时间 在研究图像识别的相关知识. 在网上看到了这个OpenCv 图像识别的开源库.功能十分的强大 .目前很多的AR技术都是基于此库. 但这个库主要是由C来编写. 对于刚刚接触的我. 入门有些难度. 但可喜的是. 此库被封装成.Net Framework 有多个版本. 我是选择了OpenCvSharp 这个封装库来学习的. (因为最开始看的一个老外的教程就是用的这个. 先入为主). 在此记下学习笔记. 以备之后回忆:

 对于初学者来说. 我觉得最困扰我的不是OpenCvSharp本身. 而是如何部署这个开源的库. 因为我机器上没有安装Visual Studio 所以一直没有去试. 我直接使用了别人源码中的运行库. 这样使用简单多了.(这个本想把 Runtime 传上来. 但由于很晚了. 所以之后再传)

  正式我的第一个学习例子: 使用OpenCvSharp来播放视频:

  1.首先: 引用 OpenCvSharp.dll ,并在程序中using OpenCVsharp; 再把Runtime 中的所有文件 复制到Debug文件夹中.. 这就完了.

  2.   // 视频地址
            string videoPath = @"F:\学习\一个视频.avi";
            // 视频帧率
            int interval = 25;
             // 使用CvWindow 类来创建一个窗口 参数为Title.
            using(CvWindow win = new CvWindow("Capture Video :"))  // 使用Using是因为此库中的绝大部分类都实现了IDispose接口. 这样省得我们还

                                  // 要在程序的 最后 destroy ,close release... 等等的操作了.

    // 这里使用CvCapture 类的FromFile 方法来读这个视频.这个类的FromCamera方法可以直接捕捉摄像头图像 ,非常的有用.且方便
                using(CvCapture video = CvCapture.FromFile(videoPath)) 
            {
                // 根据帧率得到每帧停留时间

      // 其实 这里 的interval 用video.Fps 获取更好. (因为是后知道的. 呵呵 )
                int delayTime = 1000 / interval;

                // while 循环播放视频

      // CvWindow 的WaitKey方法 delayTime 是毫秒. WaitKey 也是为了来处理输入事件 . 如果没有它.直接while(true) 程序就卡死了.
                while (CvWindow.WaitKey(delayTime) < 0) {

        // 使用queryFrame()方法把视频的下一帧读到内存并显示出来.
                    win.Image = video.QueryFrame();
                }
            }

    

View Code
 1 using System;
2 using OpenCvSharp;
3
4 namespace CaptureVideo
5 {
6 public class Program
7 {
8 static void Main()
9 {
10 // 视频地址
11 string videoPath = @"F:\学习\一个POLY建模脚本的演示.avi";
12 // 视频帧率
13 //int interval = 25;
14
15 using(CvWindow win = new CvWindow("Capture Video :"))
16 using(CvCapture video = CvCapture.FromFile(videoPath))
17 {
18 // 根据帧率得到每帧停留时间
19 //int delayTime = 1000 / interval;
20 int delayTime = 1000 / (int)video.Fps;
21
22 // while 循环播放视频
23 while (CvWindow.WaitKey(delayTime) < 0) {
24 win.Image = video.QueryFrame();
25 }
26 }
27 }
28 }
29 }

  

原文地址:https://www.cnblogs.com/easyfrog/p/2353388.html