Python提取视频帧图片实例代码
作者:乐观的lishan 发布时间:2023-02-11 18:15:21
标签: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")
来源:https://blog.csdn.net/lishan132/article/details/122201250
0
投稿
猜你喜欢
- 一.文件基本操作1.1 文件打开和关闭open(‘文件名称','打开模式')模式:r(只读,指针再头) w(只写,存
- 普通滑动验证以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简
- 前言:python利用matplotlib库中的plt.ion()函数实现即时数据动态显示:1.非定长的时间轴代码示例:# -*- codi
- 在指定路径下新建一个文件夹:import osdef newfile(path): path=path.strip() path=path.
- python中的绘图工具有不少,比如Matplotlib等等,但这些只能用来画表格,今天我们来介绍一款可以用来画画的库——turtle。一、
- 当用户关闭cookie时,通过asp程序提示访客打开,源代码如下: Dim strCookie, strT
- 传统Python语言的主要控制结构是for循环。然而,需要注意的是for循环在Pandas中不常用,因此Python中for循环的有效执行并
- 有时候需要在网页中某个div载入之后,动态引入一段javascript,IE下的解决方案: newjs. onreadystatechang
- 当然是可以的,而且非常简单,今天就教大家在ASP中不用模板生成HTML静态页的方法。这里假设有一个htmer.asp动态页面,你想把它生成为
- 放到公用调用文件(如conn数据库链接文件),对所有GET或POST的数据进行过滤特殊字符串,以实现简单有效的SQL注入过滤Function
- 我将图形编辑程序分为两类:一类(是)绘图程序,利用这种程序可以一个像素一个像素(地)绘制图像;另外一类(是)制图程序,这种程序提供了一组对象
- Python中的中文是个很头痛的问题,Python2和Python3都会出现,而且py2中出现的概率要大些。 有一道面试题: Py
- 众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护。但是,对于像
- 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项可以是不同的类型,可以是字符串,可以是数字类型,甚至
- JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,可替换XML成
- 前言本文根据安前松的视频分享整理而来,视频回放地址如下:www.bilibili.com/video/BV1Hr…一、
- /r的用法与end=""用法 \r 表示将光标的位置回退到本行的开头位置end="" 意思
- 对于PHP的逐渐流行,我们有目共睹:无论是BLOG程序中的WordPress,还是CMS程序中的DEDECMS,还是BBS程序中的Discu
- Ajax在网上已经叫喊了好几年了, 但是还是有很多像我这样的新手没掌握它, 像这样能改善交互体验的技术不会用真是很遗憾呢. 所以我就把我学到
- 说明1、利用_slots__类属性,可以将实例属性存储在元zu中,大大节省了存储空间。2、所有属性都必须定义为__slots__元组,子类还