日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【opencv】10.播放视频 以及 设置任意键为暂停键

發(fā)布時間:2025/3/21 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【opencv】10.播放视频 以及 设置任意键为暂停键 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.imshow()顯示圖像幀時暫停鍵的用法

//嚴(yán)格按照下面這種方式和順序不會有問題,例如在imshow后面直接跟cv::waitKey(1)后再char c=...會有問題。 cv::namedWindow("light_object", cv::WINDOW_NORMAL); cv::resizeWindow("light_object", 640, 480); cv::imshow("light_object", frame); char c = static_cast<char>(cv::waitKey(50)); if (c == ' ') { cv::waitKey(0); }

2.opencv播放視頻 以及 設(shè)置任意鍵為暫停鍵

【該方法不實用,可能會暫停不了,時靈時不靈】
對于cv::VideoCapture的使用可以參考 https://blog.csdn.net/guduruyu/article/details/68486063

cv::Mat img; std::string videopath="./path/.."; cv::VideoCapture cap;cap.open(videopath);if (!cap.isOpened()) { std::cout << "Can't open the video file!"<<std::endl; return -1; }cap >> img; // 把捕獲的幀傳送給img。在這一句后面設(shè)置暫停鍵 //cap.read(img); // 這句話和cap >> img等價。 // 設(shè)置任意鍵為暫停鍵,即暫停捕獲視頻中的幀 if(cv::waitKey(1)>=0) //有鍵盤上的鍵按下時,該函數(shù)返回值>=0;沒有鍵按下時,該函數(shù)返回值為-1。cv::waitKey(1)為等待1ms;cv::waitKey(0); //cv::waitKey(0);為一直等待直到有鍵按下。// 判斷是否圖片是否為空,為空說明沒有打開video。 if (img.empty()) {cap.open(videopath); }// 設(shè)置任意鍵暫停 if(cv::waitKey(1)>=0) cv::waitKey(0);// 推薦用下面這種方式 // cv::waitkey()中的延遲時間需要根據(jù)程序定義,太少了捕捉不到按鍵,我目前沒碰到這種情況,碰到設(shè)置再大延時也捕獲不到按鍵的情況。 // cv::waitKey(1)括號中必須填上1或者別的數(shù)字,否則會一直等待鍵盤按下,當(dāng)鍵盤某鍵按下時,會返回該鍵的ascii碼 char key=cv::waitKey(3); if(key ==32) //空格鍵暫停,空格鍵對應(yīng)的ascii碼是32cv::waitKey(0); if(key ==9){ //tab鍵快進(jìn)30幀,設(shè)置不了使用右箭頭for(int i=0;i<30;i++) //快進(jìn)30幀cap >> img; //快進(jìn)多少幀,就把這一句執(zhí)行多少次 }

【不推薦】使用下面這種方法,因為我在apollo上使用根本捕獲不了按鍵,我目前還不知道是什么原因,必須使用以上方式把cv::waitKey(1)先賦值給一個char變量才行。

if(cv::waitKey(3) ==32) //空格鍵暫停cv::waitKey(0); if(cv::waitKey(3) ==9){ //tab鍵快進(jìn)30幀,設(shè)置不了使用右箭頭for(int i=0;i<30;i++) //快進(jìn)30幀cap >> img; //快進(jìn)多少幀,就把這一句執(zhí)行多少次 }

3.當(dāng)使用imshow顯示每一幀畫面時,出現(xiàn)卡頓的解決辦法

讀取每一幀在哪個{}中,imshow()就應(yīng)該在哪個{}中,必須出現(xiàn)在同等級的{}中,不能出現(xiàn)在他下面的二級{{imshow()}}中。否則,當(dāng)二級{}不符合條件時,執(zhí)行不到二級{}里面的imshow()時候,就會出現(xiàn)畫面卡頓。

總結(jié)

以上是生活随笔為你收集整理的【opencv】10.播放视频 以及 设置任意键为暂停键的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。