欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于OpenCV實現(xiàn)視頻循環(huán)播放

 更新時間:2022年02月25日 08:49:40   作者:求則得之,舍則失之  
這篇文章主要為大家介紹了如何利用OpenCV實現(xiàn)視頻的循環(huán)播放,本文為大家提供了兩種方式,一個是利用Python語言實現(xiàn),一個是利用C++語言實現(xiàn),需要的可以參考一下

介紹

本文將介紹基于OpenCV實現(xiàn)視頻的循環(huán)播放。

有以下三個步驟:

  • 首先設置一個frame的設置參數(shù)frame_counter,值為0
  • 在讀幀時間,將每次加一
  • 當 frame_counter 達到視頻總幀數(shù)時,將當前的幀設置為 0

視頻總幀數(shù):CAP_PROP_FRAME_COUNT

設置當前的幀:CAP_PROP_POS_FRAMES

VideoCaptureProperties通用屬性標識符參考地址。

1.Python+OpenCV實現(xiàn)

import cv2

cap = cv2.VideoCapture("001.mp4")
frame_counter = 0

while (cap.isOpened()):
   ret, frame = cap.read()

   frame_counter += 1
   if frame_counter == int(cap.get(cv2.CAP_PROP_FRAME_COUNT)):
      frame_counter = 0
      cap.set(cv2.CAP_PROP_POS_FRAMES, 0)

   cv2.imshow("frame", frame)
   key = cv2.waitKey(1)
   # ESC
   if key == 27:
      break
cap.release()
cv2.destroyAllWindows()

2.C++ + OpenCV實現(xiàn)

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main() {
 
    cv::Mat frame;
    cv::VideoCapture cap("001.mp4");   
      
    int frame_counter = 0;
    while (true)
    {
      cap >> frame;
      if (!frame.data)
      {
         printf("Image not loaded");
         return -1;
      }
      
      frame_counter += 1;
      if (frame_counter == int(cap.get(cv::CAP_PROP_FRAME_COUNT))){
          frame_counter = 0;
          cap.set(cv::CAP_PROP_POS_FRAMES, 0);
      }

      cv::imshow("demo", frame);
      char(key)=(char)cv::waitKey(1);
      if(key==27)
          break;
     }

 
    return 0;
}

補充

當然,OpenCV不僅能實現(xiàn)視頻的循環(huán)播放,還能實現(xiàn)視頻的倒放

下面將用C語言實現(xiàn)視頻的倒放,以下是示例代碼

#include <stdio.h>
#include<math.h>
#include <cv.h>
#include <highgui.h>

int main(int argc, char* argv[]) {undefined
    int i = 0, j = 0, k = 0;
    cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE);
    CvCapture* capture = 0;
    capture = cvCreateFileCapture("gr18.avi");
    
    if (!capture) {undefined
    return -1;
    }
    
    
    IplImage *out = cvQueryFrame(capture);//Init the video read

                                          //用于確定幀數(shù)
    while ((out = cvQueryFrame(capture)) != NULL) {undefined
        k++;
    }
    cvReleaseCapture(&capture);
    capture = cvCreateFileCapture("gr18.avi");
    out = cvQueryFrame(capture);//沒有它J會多一幀。

    
    double fps = cvGetCaptureProperty(
        capture,
        CV_CAP_PROP_FPS
        );
    
    CvSize size = cvSize(
        (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH),
        (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT)
        );
    
    CvVideoWriter *writer = cvCreateVideoWriter(
        "gr13.avi",
        CV_FOURCC('M', 'J', 'P', 'G'),
        fps,
        size
        , 1
        );
    IplImage* logpolar_frame = cvCreateImage(
        size,
        IPL_DEPTH_8U,
        3
        );
    //out = cvCloneImage(img);

    int booll = 1;
    while ((out = cvQueryFrame(capture)) != NULL)
    {undefined
        
        i = 0;
    
        j++;;

        booll = 0;
        if (j == k)//用于從第J幀開始寫入
        {undefined
            cvShowImage("Example3", out);
            cvWaitKey(1);

            cvWriteFrame(writer, out);
            k--; j = 0;

            //重復初始化
            capture = cvCreateFileCapture("gr18.avi");
            out = cvQueryFrame(capture);
        }
        //j++;


        if (k == 0)break;
    }
    printf("||%d %d", k, j); getchar();
    cvReleaseVideoWriter(&writer);
    cvReleaseImage(&logpolar_frame);
    cvReleaseCapture(&capture);
    //cvReleaseCapture(&capture);
    cvDestroyWindow("Example3");
    

    return(0);
}

到此這篇關于基于OpenCV實現(xiàn)視頻循環(huán)播放的文章就介紹到這了,更多相關OpenCV視頻播放內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python-django中的APPEND_SLASH實現(xiàn)方法

    python-django中的APPEND_SLASH實現(xiàn)方法

    這篇文章主要介紹了python-django中的APPEND_SLASH實現(xiàn)方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • Python將DataFrame的某一列作為index的方法

    Python將DataFrame的某一列作為index的方法

    下面小編就為大家分享一篇Python將DataFrame的某一列作為index的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python Color類與文字繪制零基礎掌握

    Python Color類與文字繪制零基礎掌握

    這篇文章主要介紹了Python Color類與文字繪制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Python自動化辦公之PPT段落的使用

    Python自動化辦公之PPT段落的使用

    這篇文章將詳細為大家介紹一些Python中PPT段落的一些使用:獲取段落、段落添加內容、自定義段落等,文中的示例代碼講解詳細,需要的可以參考一下
    2022-05-05
  • Python實現(xiàn)代碼統(tǒng)計工具

    Python實現(xiàn)代碼統(tǒng)計工具

    這篇文章主要為大家詳細介紹了Python實現(xiàn)代碼統(tǒng)計工具,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 解決Python串口接收無標識不定長數(shù)據(jù)

    解決Python串口接收無標識不定長數(shù)據(jù)

    這篇文章主要介紹了解決Python串口接收無標識不定長數(shù)據(jù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python中實現(xiàn)詞云圖的示例

    python中實現(xiàn)詞云圖的示例

    這篇文章主要介紹了python中實現(xiàn)詞云圖的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • pthon貪吃蛇游戲詳細代碼

    pthon貪吃蛇游戲詳細代碼

    這篇文章主要為大家詳細介紹了Python貪吃蛇游戲詳細代碼和注釋,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Python虛擬機中描述器的王炸應用分享

    Python虛擬機中描述器的王炸應用分享

    本篇文章給大家介紹一下描述器在?python?語言當中有哪些應用,主要介紹如何使用?python?語言實現(xiàn)?python?內置的?proterty?、staticmethod?和?class?method,需要的可以參考一下
    2023-05-05
  • python實現(xiàn)去除下載電影和電視劇文件名中的多余字符的方法

    python實現(xiàn)去除下載電影和電視劇文件名中的多余字符的方法

    這篇文章主要介紹了python實現(xiàn)去除下載電影和電視劇文件名中的多余字符的方法,可以批量修改視頻文件名稱,非常具有實用價值,需要的朋友可以參考下
    2014-09-09

最新評論