opencv 實(shí)現(xiàn)視頻暫停播放和進(jìn)度條控制

opencv提供了簡(jiǎn)單而高效的方法,通過(guò)調(diào)用回調(diào)函數(shù),以實(shí)現(xiàn)對(duì)視頻播放的簡(jiǎn)單控制,包括進(jìn)度條拖動(dòng)和暫停播放控制。
此函數(shù)通過(guò)創(chuàng)建一個(gè)指定范圍的控制條(一個(gè)范圍控制或者滑動(dòng)條)劫流,通過(guò)回調(diào)函數(shù)同步一個(gè)表示滑動(dòng)條位置的變量值巫玻。該函數(shù)的簡(jiǎn)單介紹和參數(shù)說(shuō)明如下:

void createTrackbar(const String& trackbarname,  // 控制條的名稱(chēng)
                                const String& winname, //窗口名稱(chēng),用以顯示進(jìn)度條
                                int * value, //整數(shù)指針祠汇,表示控制條當(dāng)前所處的位置(一般調(diào)用中仍秤,傳int變量地引用)
                                int count, //控制條的最大值,最小的位置總是0
                                onChange, //回調(diào)函數(shù)的指針可很,反映每一時(shí)刻控制條的位置诗力,函數(shù)原型是 void Foo(int,void*), 第一個(gè)參數(shù)表示控制條的位置,第二個(gè)參數(shù)表示用戶(hù)數(shù)據(jù)
                              userdata  // 回調(diào)函數(shù)傳遞的用戶(hù)數(shù)據(jù)我抠,可以通過(guò)非全局變量實(shí)現(xiàn)控制條事件控制
)

通過(guò)以上函數(shù)苇本,可以實(shí)現(xiàn)視頻播放和暫停控制的代碼如下:

#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>

using namespace cv;
int FrameNums;  //視頻幀的數(shù)量
int trackValue = 0; // 控制條數(shù)值
int paused = 0;  // 是否暫停
int framePos = 0;
void onChange(int,void* param)  // 控制進(jìn)度條位置的回調(diào)函數(shù)
{
    VideoCapture cap = *(VideoCapture*)param;
    cap.set(CAP_PROP_POS_FRAMES,trackValue);
    
}
void controlPause(int,void *)  // 控制播放暫停的回調(diào)函數(shù)
{
    if (paused == 0)
    {
        paused = 1;
    }
    else
    {
        paused = 0;
    }
}
int main()
{
    VideoCapture cap = VideoCapture("stellaris.mp4");
    if (!cap.isOpened())
    {
        std::cerr << "視頻打開(kāi)錯(cuò)誤菜拓!" << std::endl;
        exit(0);
    }
    FrameNums = cap.get(CAP_PROP_FRAME_COUNT); //視頻總幀數(shù)
    double fps = cap.get(CAP_PROP_FPS); //視頻幀率
    namedWindow("video", 1);
    createTrackbar("trackbarslide","video",&trackValue,FrameNums,onChange,&cap); //視頻進(jìn)度條控制
    createTrackbar("pause", "video", &trackValue, 1, controlPause); //視頻播放暫桶暾控制
    Mat frame; //視頻幀
    
    while (1)
    {
        if(paused==0)  //播放
        { 
            framePos = cap.get(CAP_PROP_POS_FRAMES);

            setTrackbarPos("trackbarslide", "video", framePos);

            cap >> frame;

            if (frame.empty())
            {
                break;
            }
            imshow("video", frame);
            waitKey(3);
            framePos++;
        }
        else //暫停
        {
            imshow("video", frame);
        }
        char c = waitKey(3);
        if (c == 27) break;
    }
    cap.release();
    destroyWindow("video");
    return 0;

}

實(shí)現(xiàn)效果如下:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纳鼎,隨后出現(xiàn)的幾起案子俺夕,更是在濱河造成了極大的恐慌裳凸,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件劝贸,死亡現(xiàn)場(chǎng)離奇詭異姨谷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)映九,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)梦湘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人氯迂,你說(shuō)我怎么就攤上這事践叠。” “怎么了嚼蚀?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵禁灼,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我轿曙,道長(zhǎng)弄捕,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任导帝,我火速辦了婚禮守谓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘您单。我一直安慰自己斋荞,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布虐秦。 她就那樣靜靜地躺著平酿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悦陋。 梳的紋絲不亂的頭發(fā)上蜈彼,一...
    開(kāi)封第一講書(shū)人閱讀 52,246評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音俺驶,去河邊找鬼幸逆。 笑死,一個(gè)胖子當(dāng)著我的面吹牛暮现,可吹牛的內(nèi)容都是我干的还绘。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼栖袋,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蚕甥!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起栋荸,我...
    開(kāi)封第一講書(shū)人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤菇怀,失蹤者是張志新(化名)和其女友劉穎凭舶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體爱沟,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帅霜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呼伸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片身冀。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖括享,靈堂內(nèi)的尸體忽然破棺而出搂根,到底是詐尸還是另有隱情,我是刑警寧澤铃辖,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布剩愧,位于F島的核電站,受9級(jí)特大地震影響娇斩,放射性物質(zhì)發(fā)生泄漏仁卷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一犬第、第九天 我趴在偏房一處隱蔽的房頂上張望锦积。 院中可真熱鬧,春花似錦歉嗓、人聲如沸丰介。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哮幢。三九已至,卻和暖如春冠场,著一層夾襖步出監(jiān)牢的瞬間家浇,已是汗流浹背本砰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工碴裙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人点额。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓舔株,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親还棱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子载慈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容