Python OpenCV实现视频分帧
作者:等一杯咖啡 发布时间:2023-06-06 02:38:18
标签:Python,OpenCV,视频分帧
本文实例为大家分享了Python OpenCV实现视频分帧的具体代码,供大家参考,具体内容如下
# coding=utf-8
import os
import cv2
videos_src_path = "/home/wgp/视频/"
video_formats = [".MP4", ".MOV"]
frames_save_path = "/home/wgp/视频/"
width = 320
height = 240
time_interval = 50
def video2frame(video_src_path, formats, frame_save_path, frame_width, frame_height, interval):
"""
将视频按固定间隔读取写入图片
:param video_src_path: 视频存放路径
:param formats:包含的所有视频格式
:param frame_save_path:保存路径
:param frame_width:保存帧宽
:param frame_height:保存帧高
:param interval:保存帧间隔
:return:帧图片
"""
videos = os.listdir(video_src_path)
def filter_format(x, all_formats):
if x[-4:] in all_formats:
return True
else:
return False
videos = filter(lambda x: filter_format(x, formats), videos)
for each_video in videos:
print "正在读取视频:", each_video
each_video_name = each_video[:-4]
os.mkdir(frame_save_path + each_video_name)
each_video_save_full_path = os.path.join(frame_save_path, each_video_name) + "/"
each_video_full_path = os.path.join(video_src_path, each_video)
cap = cv2.VideoCapture(each_video_full_path)
frame_index = 0
frame_count = 0
if cap.isOpened():
success = True
else:
success = False
print("读取失败!")
while(success):
success, frame = cap.read()
print "---> 正在读取第%d帧:" % frame_index, success
if frame_index % interval == 0:
resize_frame = cv2.resize(frame, (frame_width, frame_height), interpolation=cv2.INTER_AREA)
# cv2.imwrite(each_video_save_full_path + each_video_name + "_%d.jpg" % frame_index, resize_frame)
cv2.imwrite(each_video_save_full_path + "%d.jpg" % frame_count, resize_frame)
frame_count += 1
frame_index += 1
cap.release()
if __name__ == '__main__':
video2frame(videos_src_path, video_formats, frames_save_path, width, height, time_interval)
来源:https://blog.csdn.net/bskfnvjtlyzmv867/article/details/79970146


猜你喜欢
- 用coding-pages打开后显示Failed to load resource: the server responded with a
- 本文实例讲述了PHP中curl_setopt函数用法。分享给大家供大家参考。具体分析如下:curl_setopt函数是php中一个重要的函数
- vue-admin-element项目突然就起不来INFO Starting development server...&nbs
- 1.安装pyinstaller https://www.jb51.net/article/177160.htm2.安装pywin32 htt
- 前言:多线程简单理解就是:一个CPU,也就是单核,将时间切成一片一片的,CPU轮转着去处理一件一件的事情,到了规定的时间片就处理下一件事情。
- 本文实例讲述了Python实现矩阵转置的方法。分享给大家供大家参考,具体如下:前几天群里有同学提出了一个问题:手头现在有个列表,列表里面两个
- 引言分享一些用Python处理yaml和嵌套数据结构的的一些技巧,首先从修改yaml格式文件的问题出发,演变出了各个解决办法,又从最后的解决
- 数据库约束要点:主键约束(非空且唯一)外键约束 子表外键字段的值必须在主表被参照字段值得范围内,或者为NULL;外键参照的必须是主表的主键或
- 最近帮人做了个贪吃蛇的游戏(交作业用),很简单,界面如下:开始界面:游戏中界面:是不是很简单、朴素。(欢迎大家访问GitHub)游戏是基于P
- 现在流行虚拟主机建站,我也有个网站,也算是个站长咯。当了近一年的站长,感到网站程序每次升级的时候颇为麻烦:先去官方看公告,然后下载升级包到本
- 想到一个好玩的,运行如下 javascript :if ('0') alert("'0' is t
- FBVFBV,即 func base views,函数视图,在视图里使用函数处理请求。以用户注册代码为例,使用两个函数完成注册初级注册代码d
- Hypothesis是Python的一个高级测试库。它允许编写测试用例时参数化,然后生成使测试失败的简单易懂的测试数据。可以用更少的工作在代
- 一个网站能切换不同的CSS风格大家应该都了解,像众所周知的腾讯在今年改版时也增加了切换皮肤的功能。根据时间自动调整站点风格是不错的想法,这种
- 这个游戏就是实现键盘上输入不同的数字,将圆分割成不同的几个部分,每部分用不同的颜色来实现。导入包导入随机包,pygame,系统包,time时
- 前言:数据库是大多数 Web 应用的基础设施,只要想把数据存储下来,就离不开数据库,下面将一起学习一下如何给 Flask 应用添加数据库支持
- Python CET自动查询方法需要用到的python方法模块有:sys、urllib2本文实例讲述了Python实现CET查分的方法。分享
- 解决方法:先encode再quote。原理:msg.encode('utf-8')是解决中文乱码问题。quote():假如U
- 前言本系统是基于fabric.js实现的canvas版图片,文本编辑器,支持对图片的放大,缩小,旋转,镜面翻转,拖动,显示/隐藏图层,删除图
- JDBC之C3P0数据库连接池,供大家参考,具体内容如下1 首先在src中创建c3p0-config.xml 配置文件,文件中内容如下(首先