Python提取视频帧图片实例代码

 更新时间:2021年12月29日 09:52:44   作者:乐观的lishan  
大家好,本篇文章主要讲的是Python提取视频帧图片实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览

为了从视频中提取每一帧图片,编写Python脚本实现该功能

video_path为指定的视频路径

interval为指定分割视频是是否跳帧,默认不跳帧,即全部分割

width, height 为指定对分割帧图片调整大小,默认不调整

该脚本自动对帧图片编号,设置为7位编码,最多可分割9999999帧图片,即92小时的30FPS视频

# !/usr/bin/env python
# -*- coding: utf-8 -*-
# ============================================================
# @Date    : 2021/12/08 14:40:31
# @Author  : LiShan
# @Email   : lishan@st.xatu.edu.com
# @File    : extract.py
# @IDE     : PyCharm
# @Func    : Extract video image
# ============================================================
import os.path
import time
import cv2
 
video_path = "./assets/intersection.mp4"
idx1 = video_path.rfind('/')
idx2 = video_path.rfind('.')
save_path = "./assets/" + video_path[idx1+1:idx2]
if os.path.exists(save_path):
    pass
else:
    os.mkdir(save_path)
 
cap = cv2.VideoCapture(video_path)
fps = int(cap.get(cv2.CAP_PROP_FPS))
print('FPS:{:.2f}'.format(fps))
rate = cap.get(5)
frame_num = cap.get(7)
duration = frame_num/rate
print('video total time:{:.2f}s'.format(duration))
 
# width, height = 1920, 1080
cnt = 0
num = 0
# interval = int(fps) * 4
interval = 1
process_num = frame_num // interval
print('process frame:{:.0f}'.format(process_num))
 
t0 = time.time()
while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        cnt += 1
        if cnt % interval == 0:
            num += 1
            # frame = cv.resize(frame, (width, height))
            cv2.imwrite(save_path + "/%07d.jpg" % num, frame)
            remain_frame = process_num - num
            t1 = time.time() - t0
            t0 = time.time()
            print("Processing %07d.jpg, remain frame: %d, remain time: %.2fs" % (num, remain_frame, remain_frame * t1))
    else:
        break
    if cv2.waitKey(1) & 0xff == 27:
        break
 
cap.release()
cv2.destroyAllWindows()
print("done")

到此这篇关于Python提取视频帧图片实例代码的文章就介绍到这了,更多相关Python提取视频帧图片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python如何实现MySQL实例初始化详解

    Python如何实现MySQL实例初始化详解

    这篇文章主要给大家介绍了关于Python如何实现MySQL实例初始化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • python-图片流传输的思路及示例(url转换二维码)

    python-图片流传输的思路及示例(url转换二维码)

    这篇文章主要介绍了python-图片流传输的思路及示例(url转换二维码),帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python如何统计函数调用的耗时

    Python如何统计函数调用的耗时

    这篇文章主要为大家详细介绍了如何使用Python实现统计函数调用的耗时,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • python 修改本地网络配置的方法

    python 修改本地网络配置的方法

    今天小编就为大家分享一篇python 修改本地网络配置的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python3.10及以上版本编译安装ssl模块的详细过程

    python3.10及以上版本编译安装ssl模块的详细过程

    最近搞安装ssl模块每天都弄到很晚,所以这里给大家整理下,这篇文章主要给大家介绍了关于python3.10及以上版本编译安装ssl模块的详细过程,文中介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Python进程间通信Queue实例解析

    Python进程间通信Queue实例解析

    这篇文章主要介绍了Python进程间通信Queue实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • python中GIL的原理及用法总结

    python中GIL的原理及用法总结

    在本篇文章里小编给大家整理的是一篇关于python中GIL的原理及用法总结内容,有需要的朋友们可以学习参考下。
    2021-03-03
  • python实现词法分析器

    python实现词法分析器

    这篇文章主要为大家详细介绍了python实现词法分析器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • Tornado Web服务器多进程启动的2个方法

    Tornado Web服务器多进程启动的2个方法

    这篇文章主要介绍了Tornado Web服务器多进程启动的2个方法,Tornado是一个用Ptyhon写的WEB服务器,需要的朋友可以参考下
    2014-08-08
  • python中f‘{}‘用法小结

    python中f‘{}‘用法小结

    这篇文章主要介绍了python中f‘{}‘用法,f’{}’用法等同于 format用法的简单使用,更加方便,本文给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论