亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        OpenCV下按視頻幀率(FPS)播放視頻

        2012-11-15 04:50:26楊青錦
        中國科技信息 2012年21期
        關(guān)鍵詞:程序

        楊青錦

        東北財經(jīng)大學津橋商學院, 大連 116023

        OpenCV下按視頻幀率(FPS)播放視頻

        楊青錦

        東北財經(jīng)大學津橋商學院, 大連 116023

        本文闡述了如何在OpenCV下按視頻幀率(FPS)播放視頻。程序使用了Windows系統(tǒng)下的高精度計時器控制視頻播放的幀間隔時間。本文給出了高精度計時器的使用方法、實現(xiàn)時間控制功能的主要程序片段,并在文章的最后比較了高精度計時器與一般計時函數(shù)的精度。

        OpenCV;幀率;高精度計時器;播放視頻

        OpenCV; fps; high-resolution timer; play video

        OpenCV是Intel公司資助的開源計算機視覺庫。它提供了幾百個C/C++函數(shù),實現(xiàn)了計算機視覺領(lǐng)域中大部分最常用的算法。使用OpenCV開發(fā)計算機視覺應用程序,經(jīng)常要讀取從攝像機獲得的視頻流或視頻文件,獲得其中的每一幀,再對該幀進行算法處理。如果要滿足程序交互性的需要,通常還要將算法處理過的幀按原視頻幀率(FPS, frame per second)顯示出來。OpenCV提供了視頻幀的讀取、顯示函數(shù)以及獲得視頻幀率屬性的函數(shù),而按幀率決定的幀時間間隔顯示幀,則需要自己編程來解決。

        在程序中,首先要取得視頻的幀率屬性,并由此計算出幀間隔時間,代碼如下:

        CvCapture* cvCreateFileCapture( const char* filename )的參數(shù)是要讀取的文件名,函數(shù)返回指向CvCapture結(jié)構(gòu)體的指針,該指針的作用類似于我們用fopen()函數(shù)打開文件,返回的指向FILE結(jié)構(gòu)體的指針,之后我們可以通過這個指針操作視頻文件。如果程序是從攝像機讀取視頻,則用cvCreateCameraCapture()代替該函數(shù)。

        double cvGetCaptureProperty( CvCapture* capture, int property_id )的作用是得到視頻的屬性信息,參數(shù)CV_ CAP_PROP_FPS要求函數(shù)返回幀率。用1000除以幀率,就得到了以毫秒為單位的幀間隔時間。

        通常一個處理視頻的OpenCV程序主循環(huán)如下所示:

        IplImage* cvQueryFrame( CvCapture* capture )的功能是順序讀取視頻的一幀,如果視頻結(jié)束,則返回的指針為NULL。程序接下來將對幀進行算法處理。在處理結(jié)束后,cvShowImage()將幀顯示在名為Video的窗口中。cvWaitKey(40)的作用是延時40毫秒。假如我們對每一幀不做任何算法處理,那么該循環(huán)體的功能,就是將該視頻以40毫秒的幀間隔(即25 fps)播放出來。然而在實際應用中,算法處理部分總會占用不定量的時間,所以延時固定時長的做法是不成立的。要使循環(huán)體的執(zhí)行時間,即每一幀的處理時間,保持在幀率決定的幀間隔時間上,需要在循環(huán)體得首尾加入時間檢測代碼,即在開頭獲取開始時間,在末尾獲取結(jié)束時間,兩個時間的差值就是循環(huán)體執(zhí)行時間。如果循環(huán)體執(zhí)行時間小于幀間隔時間,則延時以確保循環(huán)體執(zhí)行時間滿足應有的幀間隔時間。

        在Windows操作系統(tǒng)下,我們用API函數(shù)QueryPerformanceFrequency()和QueryPerformanceCounter()進行時間檢測。這兩個函數(shù)的聲明如下:

        QueryPerformanceFrequency()的輸出值lpFrequency指向系統(tǒng)內(nèi)高精度性能計數(shù)器的頻率,QueryPerformanceCounter()的輸出值lpPerformanceCount指向調(diào)用時刻高精度性能計數(shù)器的計數(shù)。在使用時,兩次調(diào)用QueryPerformanceCounter(),所得結(jié)果的差值,除以QueryPerformanceFrequency()得到的頻率,就得到兩次調(diào)用的間隔時間。舉例來說,如QueryPerformanceFrequency()得到的高精度性能計數(shù)器的頻率是每秒50000次,先后兩次調(diào)用QueryPerformanceCounter()得到的值分別是1500和3500,那么兩次調(diào)用的時間間隔為(3500-1500)/50000=0.04秒。

        上述兩個函數(shù)的參數(shù)都是 LARGE_ INTEGER* 類型,LARGE_INTEGER的定義如下:

        由上可見,LARGE_INTEGER代表了一個64位的整數(shù),在一般程序中,我們只需要使用其低32位,即DWORD LowPart。

        實現(xiàn)時間控制功能的完整程序片段如下所示:

        在一般的對實時性要求不高的程序中,常使用Windows API函數(shù)GetTickCount()獲取時間間隔。MSDN關(guān)于GetTickCount()的時間精度說明在10~16毫秒之間,這對于一般應用程序中的耗時計算是足夠的,但對于幀時間間隔在毫秒級的視頻播放來說,就顯得精度不足了。MSDN推薦了高精度計時器QueryPerformanceFrequency()和QueryPerformanceCounter()用于更高精度的計時,雖然MSDN沒有明確說明高精度計時器的所能達到的精度,因其精度取決于計算機處理器,但在筆者的實際應用中,高精度性能計數(shù)器完全可以滿足視頻播放的毫秒級精度。

        最后補充一點,如果處理視頻的循環(huán)體執(zhí)行時間大于原視頻的幀間隔時間,造成視頻不能按原幀率播放,則需要優(yōu)化每幀的處理算法,使每幀的處理時間保持在限度之內(nèi),滿足實時性的需求。

        [1]劉瑞禎,于仕琪.OpenCV教程 基礎(chǔ)篇. 北京北京航空航天大學出版社, 2007.

        [2]Intel OpenCV1.0安裝包自帶幫助文檔.http:// opencvlibrary.sourceforge.net/,2007.

        [3]Microsoft MSDN. http://msdn.microsoft.com/,4/10/2011.

        How to play video at its original fps in OpenCV

        Yang Qingjin
        Kingbridge College of Dongbei University of Finance & Economics Dalian 116023

        This article depicts how to play video at its original fps in OpenCV. The program uses highresolution timer of Windows system to play video at a certain frame interval. This article demonstrates the usage of high-resolution timer and the code segment implementing time control. In the end, this article compares the resolution between high-resolution timer and common timer function.

        10.3969/j.issn.1001-8972.2012.21.032

        楊青錦,1982,男,碩士,物流系統(tǒng)中的計算機視覺應用。

        猜你喜歡
        程序
        給Windows添加程序快速切換欄
        電腦愛好者(2020年6期)2020-05-26 09:27:33
        試論我國未決羈押程序的立法完善
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        基于VMM的程序行為異常檢測
        偵查實驗批準程序初探
        我國刑事速裁程序的構(gòu)建
        創(chuàng)衛(wèi)暗訪程序有待改進
        恐怖犯罪刑事訴訟程序的完善
        japanesehd中国产在线看 | 久久久精品中文无码字幕| 少妇人妻av一区二区三区| 国产精选自拍视频网站| 亚洲 另类 日韩 制服 无码| 国产精品搭讪系列在线观看| 无人视频在线播放在线观看免费| 亚洲一区二区三区偷拍视频| 又爽又黄又无遮挡网站| 国产女精品视频网站免费| 国产成年无码久久久久下载| 一区二区三区亚洲视频| 久久久亚洲精品一区二区三区 | 放荡的少妇2欧美版| 中文字幕美人妻亅u乚一596| 波多吉野一区二区三区av| 一本色道久久亚洲精品| 又嫩又硬又黄又爽的视频| 亚洲精品成人片在线观看| 日本第一区二区三区视频| 日韩av一区二区不卡| 日韩放荡少妇无码视频| 亚洲人成人网毛片在线播放| 国产少妇一区二区三区| 亚洲youwu永久无码精品| 久久精品国产第一区二区三区| 人妻少妇一区二区三区| 国产午夜精品视频观看| 偷国产乱人伦偷精品视频| 日韩毛片基地一区二区三区| 青青草伊人视频在线观看| 国产网站一区二区三区| 中文字幕乱伦视频| 久久中文字幕亚洲精品最新| 亚洲一区二区三区在线视频| 正在播放国产多p交换视频 | 大ji巴好深好爽又大又粗视频| 亚洲成成品网站源码中国有限公司| 一本色道久久综合中文字幕| 精品视频在线观看日韩| 一个人看的视频www免费|