iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >基于OpenCV实现视频循环播放
  • 373
分享到

基于OpenCV实现视频循环播放

2024-04-02 19:04:59 373人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录介绍1.python+OpenCV实现2.c+++OpenCV实现补充介绍 本文将介绍基于OpenCV实现视频的循环播放。 有以下三个步骤: 首先设置一个frame的设置参数fr

介绍

本文将介绍基于OpenCV实现视频的循环播放。

有以下三个步骤:

  • 首先设置一个frame的设置参数frame_counter,值为0
  • 在读帧时间,将每次加一
  • 当 frame_counter 达到视频总帧数时,将当前的帧设置为 0

视频总帧数:CAP_PROP_FRAME_COUNT

设置当前的帧:CAP_PROP_POS_FRAMES

VideoCaptureProperties通用属性标识符参考地址。

1.Python+OpenCV实现

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实现

#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不仅能实现视频的循环播放,还能实现视频的倒放

下面将用C语言实现视频的倒放,以下是示例代码

#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

                                          //用于确定帧数
    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实现视频循环播放的文章就介绍到这了,更多相关OpenCV视频播放内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 基于OpenCV实现视频循环播放

本文链接: https://www.lsjlt.com/news/140451.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于OpenCV实现视频循环播放
    目录介绍1.Python+OpenCV实现2.C+++OpenCV实现补充介绍 本文将介绍基于OpenCV实现视频的循环播放。 有以下三个步骤: 首先设置一个frame的设置参数fr...
    99+
    2022-11-13
  • 基于Qt实现视频播放器功能
    目录一、功能介绍二、代码三、运行一、功能介绍 能实现视频播放 二、代码 mainwindow.h #ifndef MAINWINDOW_H #define MAINWIND...
    99+
    2022-11-12
  • 基于Qt实现视频播放器的制作
    本篇博客介绍如何利用qMediaPlayer和qvideowidget实现视频文件(avi,mp4….)的播放,并且提供进度显示,还可以通过拖动进度条来变换播放位置。 ...
    99+
    2022-12-08
    Qt实现视频播放器 Qt 视频播放器 Qt 视频播放
  • 基于electron的音视频播放器
    目录前言选择做一个音视频播放器桌面应用程序原因技术的选型已经实现了的功能音视频播放实现右键菜单实现总结效果图前言 我是一个前端工程师,前一段时间想着搞一个属于自己的作品,所以就突发奇...
    99+
    2022-11-13
  • HTML5如何通过Vedio标签实现视频循环播放
    小编给大家分享一下HTML5如何通过Vedio标签实现视频循环播放,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!要实现网页播放视频在HTML5以前是通过<e...
    99+
    2023-06-09
  • HTML5中video如何循环播放多个视频
    这篇文章主要介绍HTML5中video如何循环播放多个视频,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!设计流程扫描二维码时,将其视频列表存入model中,存入第一条是为了,不在html界面重新获取第一条视频&nbs...
    99+
    2023-06-09
  • 基于HTML5的在线视频播放方法
    本文小编为大家详细介绍“基于HTML5的在线视频播放方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“基于HTML5的在线视频播放方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识...
    99+
    2022-10-19
  • 基于Python实现捕获,播放和保存摄像头视频
    目录读取视频从相机中读取视频从文件中播放视频保存视频前几天有个读者在粉丝群里面提了一个问题: Python 怎样提高视频清晰度和对比度? 我之前没有涉及到使用 Python 操作视频...
    99+
    2022-11-10
  • 基于Qt编写简易的视频播放器
    目录一、前言二、效果图三、体验地址四、相关代码五、功能特点5.1 基础功能5.2 特色功能5.3 视频控件5.4 内核ffmpeg一、前言 花了一年多的时间,终于把这个超级播放器做成...
    99+
    2022-12-08
    Qt视频播放器 Qt视频播放 Qt 播放器
  • AndroidUniversalVideoView实现视频播放器
    本文实例为大家分享了Android UniversalVideoView实现视频播放器的具体代码,供大家参考,具体内容如下 1.添加依赖 app下的 build.gradle d...
    99+
    2022-11-13
  • Android如何选择图片或视频进行循环播放
    这篇文章主要介绍Android如何选择图片或视频进行循环播放,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!项目要求对本地图片或者视频进行轮播,功能实现完成后发现只是在模拟器上运行ok,后来发现是文件路径的原因。文件u...
    99+
    2023-05-30
    android
  • 基于Python怎么实现捕获,播放和保存摄像头视频
    本篇内容介绍了“基于Python怎么实现捕获,播放和保存摄像头视频”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!读取视频要捕获视频,你需要创...
    99+
    2023-06-30
  • Android如何实现播放视频
    这篇文章将为大家详细讲解有关Android如何实现播放视频,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、通过intent的方式,调用系统自带的播放器  Uri uri&n...
    99+
    2023-05-31
    android
  • AndroidWebView实现全屏播放视频
    目录介绍主要代码介绍 最近项目开发中用到了WebView播放视频的功能,总结了开发中犯过的错误,这些错误在开发是及容易遇到的,所以我这里总结了一下,希望大家看到后不要再犯类似的错误,...
    99+
    2022-11-12
  • html5如何实现视频播放
    这篇文章主要为大家展示了“html5如何实现视频播放”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“html5如何实现视频播放”这篇文章吧。一、html5技术优势...
    99+
    2022-10-19
  • Android实现音乐视频播放
    本文实例为大家分享了Android实现音乐视频播放的具体代码,供大家参考,具体内容如下 步骤 1、新建一个安卓项目,再加一个assets包 2、在 assets中加入一段音频 3...
    99+
    2022-11-12
  • android实现播放网络视频
    本文实例为大家分享了android实现播放网络视频的具体代码,供大家参考,具体内容如下 PlayVideoActivity.java package cn.edu.zufe.a...
    99+
    2022-11-12
  • Django如何实现视频播放
    这篇文章主要讲解了“Django如何实现视频播放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django如何实现视频播放”吧!view视图import reimport ...
    99+
    2023-06-30
  • Android ViewPager实现Banner循环播放
    问题的起源 在项目里,有时候需要实现一个图片轮播的效果,用来展示Banner。同时,图片能循环播放,下面还有一排小圆点来指示当前轮播到哪一页了。 如下图: 分析 · 图片的...
    99+
    2022-06-06
    viewpager Android
  • 基于opencv实现视频中的颜色识别功能
    目录颜色识别的原理opencv中的颜色模型颜色识别的实现(c++)颜色识别的原理 opencv中的颜色模型 RGB RGB具有三个通道其,分别表示红色通道®,绿色通道(G),...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作