zoukankan      html  css  js  c++  java
  • 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 }

      

  • 相关阅读:
    ABP框架(asp.net core 2.X+Vue)运行前端(转)
    Spring学习指南第3版例子程序导入idea20.02
    Docker运行jar包(转)
    centos7使用docker搭建运行环境并部署jar(转)
    centos7修改docker镜像源的方法(转)
    虚拟机下CentOS7安装Docker(转)
    Virtual Box配置CentOS7网络(图文教程)(转)
    虚拟机docker运行jar程序
    docker安装
    【591】通过 Terminal 直接获取 GitHub 源码
  • 原文地址:https://www.cnblogs.com/easyfrog/p/2353388.html
Copyright © 2011-2022 走看看