最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

介紹

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

有以下三個(gè)步驟:

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

視頻總幀數(shù):CAP_PROP_FRAME_COUNT

設(shè)置當(dāng)前的幀:CAP_PROP_POS_FRAMES

VideoCaptureProperties通用屬性標(biāo)識(shí)符參考地址

1.Python+OpenCV實(shí)現(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實(shí)現(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;
}

補(bǔ)充

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

下面將用C語言實(shí)現(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會(huì)多一幀。

    
    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;

            //重復(fù)初始化
            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);
}

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

相關(guān)文章

  • python計(jì)算兩個(gè)矩形框重合百分比的實(shí)例

    python計(jì)算兩個(gè)矩形框重合百分比的實(shí)例

    今天小編就為大家分享一篇python計(jì)算兩個(gè)矩形框重合百分比的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python argparser的具體使用

    python argparser的具體使用

    這篇文章主要介紹了python argparser的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python3基礎(chǔ)之基本運(yùn)算符概述

    Python3基礎(chǔ)之基本運(yùn)算符概述

    這篇文章主要介紹了Python3基礎(chǔ)的基本運(yùn)算符,非常重要的知識(shí)點(diǎn),需要的朋友可以參考下
    2014-08-08
  • python實(shí)現(xiàn)超級(jí)瑪麗游戲

    python實(shí)現(xiàn)超級(jí)瑪麗游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)超級(jí)瑪麗游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python多線程編程(四):使用Lock互斥鎖

    Python多線程編程(四):使用Lock互斥鎖

    這篇文章主要介紹了Python多線程編程(四):使用Lock互斥鎖,本文講解了互斥鎖概念、同步阻塞、代碼示例等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • python實(shí)現(xiàn)的jpg格式圖片修復(fù)代碼

    python實(shí)現(xiàn)的jpg格式圖片修復(fù)代碼

    這篇文章主要介紹了python實(shí)現(xiàn)的jpg格式圖片修復(fù)代碼,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)簡單字典樹的方法

    Python實(shí)現(xiàn)簡單字典樹的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)簡單字典樹的方法,實(shí)例分析了Python字典樹的定義、實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2016-04-04
  • Python實(shí)現(xiàn)動(dòng)態(tài)繪圖的示例詳解

    Python實(shí)現(xiàn)動(dòng)態(tài)繪圖的示例詳解

    matplotlib中的animation提供了動(dòng)態(tài)繪圖功能,這篇文章主要為大家詳細(xì)介紹了Python如何利用matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪圖,感興趣的可以了解一下
    2023-05-05
  • python數(shù)組如何添加整行或整列

    python數(shù)組如何添加整行或整列

    這篇文章主要介紹了python數(shù)組如何添加整行或整列問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python實(shí)現(xiàn)序列化及csv文件讀取

    Python實(shí)現(xiàn)序列化及csv文件讀取

    這篇文章主要介紹了Python實(shí)現(xiàn)序列化及csv文件讀取,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

锦屏县| 彩票| 屏南县| 阿拉善左旗| 阜康市| 亳州市| 通道| 稷山县| 泗洪县| 深圳市| 台南县| 林甸县| 繁峙县| 新河县| 定日县| 乐山市| 永嘉县| 梅河口市| 榆社县| 亚东县| 张家港市| 南靖县| 连云港市| 岚皋县| 建瓯市| 旬阳县| 广昌县| 阜新市| 青神县| 特克斯县| 河西区| 肇庆市| 黄山市| 沁源县| 阿城市| 博爱县| 福海县| 武城县| 宁夏| 乌什县| 岑巩县|