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 }

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM