亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

Opencv實現視頻播放與進度控制

2020-01-26 13:47:04
字體:
來源:轉載
供稿:網友

視頻畫面本質上是由一幀一幀的連續圖像組成的,播放視頻其實就是在播放窗口把一系列連續圖像按一定的時間間隔一幅幅貼上去實現的。

人眼在連續圖像的刷新最少達到每秒24幀的時候,就分辨不出來圖像間的閃動了,使人感覺呈現出來的是連續的畫面,視頻的播放就是利用了這一點。我們知道,電影被稱為“24幀的藝術”,意思就是電影畫面每秒刷新24幀,即每秒顯示24副圖像,它的幀率(Frames per Second,簡稱:FPS)為24。

一般情況下幀率要大于等于24,以下先測試一下兩個視頻文件的幀率,一個是網絡上下載的“”friends“”,一個是用手機拍攝的視頻。

#include "core/core.hpp" #include "highgui/highgui.hpp" #include "imgproc/imgproc.hpp" #include <iostream>  using namespace cv;  int main(int argc,char *argv[]) {   VideoCapture videoFriends(argv[1]);   VideoCapture videoPhone(argv[2]);   double fpsFriends=videoFriends.get(CV_CAP_PROP_FPS);   double fpsPhone=videoFriends.get(CV_CAP_PROP_FPS);   std::cout<<"FPS of Friends is: "<<fpsFriends<<std::endl;   std::cout<<"FPS of MyPhone is: "<<fpsPhone<<std::endl;   system("pause");   return 0; } 

經測試,兩個視頻文件的幀率都是23.976

播放與進度控制里主要用到 VideoCapture類里的get()函數,和創建控制條的createTrackbar()函數,get()函數用于獲取視頻的幀數、幀率等信息,了解get函數的參數含義即可,像get(CV_CAP_PROP_FRAME_COUNT)用于獲取總幀數,get(CV_CAP_PROP_FPS)用于獲取幀率等。

控制條作為Opencv中一個重要的用戶和圖像傳參、交互的工具,伴隨了整個opencv圖像處理的過程,之前有提到過,這里有必要再說一說createTrackbar()這個函數。

函數原型

int createTrackbar(const string& trackbarname, const string& winname,                int* value, int count,                TrackbarCallback onChange = 0,                void* userdata = 0); 

該函數作用是在指定圖像窗口上創建一個控制條,這個控制條具有指定的參數控制范圍,可以通過回調函數,執行對應的操作。
第一個參數:const修飾的string類型的引用trackbarname,表示控制條的名稱
第二個參數:const修飾的string類型的引用winname,表示控制條所在的圖像窗口的名稱
第三個參數:int型的指針value,表示滑塊的控制位置,拖動控制條滑塊的位置,相應的會改變*value的值
第四個參數:int型的count,表示控制條上滑塊的最大位置處對應的值
第五個參數:TrackbarCallback類型的onChange,表示一個指向回調函數的指針,每當滑塊的位置發生變化,都會觸發該回調函數
第六個參數:void型的userdata,一般使用其默認值0

Opencv通過VideoCapture類播放視頻與通過createTrackbar創建進度條控制視頻播放Code:

#include "core/core.hpp" #include "highgui/highgui.hpp" #include "imgproc/imgproc.hpp" #include <iostream>  using namespace cv;  Mat image;  //讀入視頻幀的Mat char* windowName="Video Control"; //播放窗口名稱 char* trackBarName="播放進度";  //trackbar控制條名稱 double totalFrame=1.0;   //視頻總幀數 double currentFrame=1.0;  //當前播放幀 int trackbarValue=1;  //trackbar控制量 int trackbarMax=255;  //trackbar控制條最大值 double frameRate=1.0; //視頻幀率 VideoCapture video;  //聲明視頻對象 double controlRate=0.1;  //控制條回調函數 void TrackBarFunc(int ,void(*)); int main(int argc,char *argv[]) {   //打開視頻文件   video.open(argv[1]);   if(!video.isOpened())   {     std::cout<<"Failed to open video"<<std::endl;   }   totalFrame=video.get(CV_CAP_PROP_FRAME_COUNT); //獲取總幀數   frameRate=video.get(CV_CAP_PROP_FPS);  //獲取幀率   double pauseTime=1000/frameRate; // 由幀率計算兩幅圖像間隔時間   namedWindow(windowName);   //在圖像窗口上創建控制條   createTrackbar(trackBarName,windowName,&trackbarValue,trackbarMax,TrackBarFunc);   TrackBarFunc(0,0);   while (true)   {     video.read(image);     resize(image,image,Size(500,400)); //調整圖像大小,視頻在我的顯示器上顯示不全     imshow(windowName,image); //顯示圖像     waitKey(pauseTime);  //圖像間隔     controlRate++;       if(controlRate>totalFrame) //播放完成退出     {       break;     }    }   video.release(); //釋放視頻,C++中不寫也無礙,可以自動釋放   waitKey();   return 0; } void TrackBarFunc(int ,void(*)) {   controlRate=(double)trackbarValue/trackbarMax*totalFrame; //trackbar控制條對視頻播放進度的控制   video.set(CV_CAP_PROP_POS_FRAMES,controlRate);  //設置當前播放幀 }
 


拖動控制條的滑塊,實現播放進度控制:


每次拖動滑塊位置發生,就會觸發定義的“TrackBarFunc”回調函數,這個函數做了兩件事,一是

controlRate=(double)trackbarValue/trackbarMax*totalFrame; //trackbar控制條對視頻播放進度的控制 

通過滑塊的位置確定視頻當前應該播放的幀數;二是

video.set(CV_CAP_PROP_POS_FRAMES,controlRate);  //設置當前播放幀 

通過set函數,設置當前播放幀。

在while循環里不斷累加當前播放幀變量,當當前播放幀大于總的幀數時,表示視頻已經播放到結尾,退出播放。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情啊啊啊| 日日摸夜夜添一区| 麻豆国产va免费精品高清在线| 亚洲电影免费观看高清| 亚洲国产精品va在线看黑人| 久久久精品中文字幕| 久久久久国产视频| 在线播放国产一区二区三区| 韩国日本不卡在线| 亚洲欧洲一区二区三区在线观看| 欧美日韩裸体免费视频| 中文日韩在线视频| 欧美视频在线视频| 一区二区三区日韩在线| 韩国视频理论视频久久| 国产成人精彩在线视频九色| 日韩午夜在线视频| 精品亚洲国产成av人片传媒| 国产日韩在线看片| 成人午夜小视频| 国产成人福利网站| 亚洲第一页中文字幕| 亚洲成人av片在线观看| 992tv成人免费影院| 不卡av日日日| 欧美精品一区三区| 亚洲精品国产美女| 97国产在线观看| 91亚洲国产成人精品性色| 亚洲黄页视频免费观看| 97超级碰在线看视频免费在线看| 国产视频福利一区| 91精品国产综合久久久久久蜜臀| 亚洲成人激情视频| 国产日产久久高清欧美一区| 最近2019中文字幕一页二页| 欧美剧在线观看| 7777精品视频| 91免费版网站入口| 久青草国产97香蕉在线视频| 久久视频在线直播| 欧美激情亚洲一区| 欧美国产日本高清在线| 久久久久久这里只有精品| 国产一区二区三区在线看| 久久精品在线播放| 亚洲一区亚洲二区亚洲三区| 国产亚洲视频在线| 成人免费视频在线观看超级碰| 8050国产精品久久久久久| 亚洲成人av资源网| 国产精品成人一区二区| 久久全球大尺度高清视频| 亚洲欧美精品suv| 97在线视频免费播放| 狠狠操狠狠色综合网| 欧美精品亚州精品| 亚洲一区二区三区xxx视频| 中文字幕在线看视频国产欧美| 国产在线精品一区免费香蕉| 午夜精品视频在线| 国产视频欧美视频| 国产97免费视| 日韩欧美一区二区三区久久| 亚洲精品之草原avav久久| 国产欧美日韩中文字幕在线| 91av在线免费观看视频| 久久免费高清视频| 国产精品扒开腿做爽爽爽视频| 插插插亚洲综合网| 亚洲国产精品小视频| 日本精品久久中文字幕佐佐木| 国产精品第三页| 亚洲自拍另类欧美丝袜| 精品动漫一区二区| 日韩精品久久久久久久玫瑰园| 中文字幕亚洲欧美日韩在线不卡| 欧美激情精品久久久久| 亚洲图片欧美日产| 26uuu亚洲伊人春色| www日韩欧美| 最近的2019中文字幕免费一页| 欧美性生交大片免费| 成人精品视频在线| 亚洲网站在线播放| 国产91精品不卡视频| 亚洲欧美日韩另类| 日韩av在线网页| 激情av一区二区| 成人在线国产精品| 亚洲福利精品在线| 国产精品精品视频一区二区三区| 国产91色在线|| 视频在线观看99| 欧美日韩人人澡狠狠躁视频| 欧美国产日产韩国视频| 中文字幕av一区二区| 国产欧美韩国高清| 日韩在线视频线视频免费网站| 国产在线视频91| 色播久久人人爽人人爽人人片视av| 国产精品久久久久久久久| 成人精品aaaa网站| 国产精品18久久久久久首页狼| 日韩性生活视频| 久久亚洲成人精品| 亚洲精品小视频| 亚洲精品久久久一区二区三区| 裸体女人亚洲精品一区| 欧美丰满老妇厨房牲生活| 伊人男人综合视频网| 国产精品一二三视频| 久久99青青精品免费观看| 亚洲精品720p| 久久人91精品久久久久久不卡| 久久久久久久久久久亚洲| 久久久久久久国产| 成人乱人伦精品视频在线观看| 欧美亚洲另类激情另类| 亚洲一区免费网站| 日韩在线精品一区| 91久久精品久久国产性色也91| 欧美激情在线狂野欧美精品| 欧美大片va欧美在线播放| 日韩在线观看免费全集电视剧网站| 亚洲自拍另类欧美丝袜| 在线观看日韩av| 国产成人精彩在线视频九色| 91热福利电影| 色婷婷综合成人| 日韩在线播放视频| 国产精品99蜜臀久久不卡二区| 中文国产成人精品久久一| www高清在线视频日韩欧美| 久久精品中文字幕一区| 亚洲free性xxxx护士hd| 欧美亚洲国产成人精品| 欧美日韩亚洲一区二区三区| 国产精品久久久久久久久久久久| 欧美大片在线影院| 成人午夜在线观看| 懂色av影视一区二区三区| 在线播放日韩精品| 国产日韩欧美在线| 中国日韩欧美久久久久久久久| 在线观看中文字幕亚洲| 亚洲国产一区二区三区在线观看| 亚洲欧美日韩精品久久| 正在播放国产一区| 人九九综合九九宗合| 91精品91久久久久久| 日韩小视频在线观看| 欧美日韩亚洲视频| 亚洲欧洲一区二区三区在线观看| 国产最新精品视频| 亚洲精品国产拍免费91在线| 亚洲成人av中文字幕| 久久国内精品一国内精品| 久久夜精品香蕉| 国产成人在线播放| 精品久久久久久久久久久久久| 国模私拍一区二区三区| 欧洲美女7788成人免费视频| 91精品综合久久久久久五月天|