脚本宝典收集整理的这篇文章主要介绍了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提取视频帧图片实例代码全部内容,希望文章能够帮你解决Python提取视频帧图片实例代码所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。