python3.5 cv2 获取视频特定帧生成jpg图片
作者:weixin_38336920 发布时间:2022-04-21 03:40:13
标签:python3.5,cv2,视频
假如文件夹有大量视频文件,需求目标是想从每个视频中提取一帧作为视频的一个封面图片,本文利用opencv-python模块实现需求。结合自己的工作,做一下简单的记录,原本想生成可传参数的exe文件,以方便同事使用。但 import cv2 用pyinstaller生成exe时就会报错,暂时没有找到解决方案 ,报错如下:
(如哪位朋友碰到类似问题,并且解决,请给我留言,谢谢大神)
1、安装模块
pip install opencv-python
安装完成后 import cv2 出现异常,ImportError:DLL load fail:找不到指定模块,最后在github上找到解决办法
It works well on windows 7.Thanks! @kenliang18
download api-ms-win-downlevel-shlwapi-l1-1-0.dll file and put it in ‘C:\Windows\Sysytem32'
then run command regsvr32 api-ms-win-downlevel-shlwapi-l1-1-0.dll /s in cmd
2、逻辑实现
import cv2
import sys
from pathlib import Path
#没有输入文件夹地址,默认文件夹
filepath = sys.argv[1] if sys.argv[1:] else 'C:/Users/Administrator/Desktop/video'
#没有输入帧数,默认帧数为180
frameNum = sys.argv[2] if sys.argv[2:] else 180
for item in Path(filepath).rglob('*.mp4'):
filename = Path(item).stem #不带后缀文件名
newPath = Path(item).parent #文件路径
cap = cv2.VideoCapture(str(item)) # 读取视频文件
cap.set(cv2.CAP_PROP_POS_FRAMES, float(frameNum))
if cap.isOpened(): #判断是否正常打开
rval , frame = cap.read()
newFile = str(newPath)+ '/' + str(filename) +'.jpg'
cv2.imencode('.jpg', frame)[1].tofile(newFile)
print(newFile) #打印生成的路径名
cap.release()
3、结果展示
获取 F:/video 文件夹里面视频的第5帧
C:\Users\Administrator\Desktop\python\2018\201810>python 2018101201.py F:/video 5
F:\video/test.jpg
F:\video/测试.jpg
来源:https://blog.csdn.net/weixin_38336920/article/details/83027317
0
投稿
猜你喜欢
- 可输入的下拉列表框(select),这个不同于网页上常见的下拉列表框,那个是只能选择不能输入的,而这个是可以自己输入文字的。例如:我们最常见
- SQL Server 2005的新功能为动态管理对象,它们是在指定时间返回某个数据库实例的特殊状态信息的数据库视图或函数。这些对象允许数据库
- 一). ubuntu下mysql安装布局:/usr/bin  
- 目标:代码改写成tf2格式把tensorflow 1.X中的代码,迁移到tensorflow2中。一些常见的改写经验。包括sess,tf.p
- 在我们使用log模块输出日志时,经常会遇到log输出重复的问题,如下:先来看这个文件log.py的代码:代码示例:''
- 前言:如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。注: 这个程序仅限在朋友之间开玩笑,别去搞什么违
- 1、存储过程基本语法: create procedure sp_name() begin ...... end; 2、如何调用: call
- 本文实例讲述了python类装饰器用法。分享给大家供大家参考。具体如下:#!coding=utf-8 registry = {} def r
- 微信小程序作为一种轻量级的应用形式,在移动互联网领域取得了极大的成功。作为 Python 开发者,如何在微信小程序的开发中发挥 Python
- 本文实例为大家分享了Python使用tkinter实现小时钟效果的具体代码,供大家参考,具体内容如下自己又调试了一下,分享一下# codin
- IIS设置首先打开IIS就不用说了巴第2步右建默认网站属性第3步主目录选项卡点击第3步的配置按钮弹出窗口的设置,至此IIS设置完毕任意编辑器
- QL Server事件探查器(Profiler)可以帮助数据库管理员跟踪SQL Server数据库所执行的特定事件,监视数据库的行为;并将这
- 脚本主要功能:1)通过zabbix api接口采集所有监控主机ip地址;2)通过cmdb系统(蓝鲸)接口采集所有生产主机IP地址、主机名、操
- 今天要帮前端写一个小后台,就是读取数据然后转成json送给他,让他去展示。数据很简单,但是处理的时候遇到了一个问题,文件中涉及到了中文的处理
- 如下所示:# u [32,30,200]# u_logits [400,32,30]q_j_400 = [] for j in range(
- 先说迭代器,对于string、list、dict、tuple等这类容器对象,使用for循环遍历是很方便的。在后台for语句对容器对象调用it
- 指定结果集的列名AS 子句可用来更改结果集列名或为导出列指定名称。当结果集列由对表或视图中的列的引用进行定义时,结果集列的名称与所引用列的名
- 前言面对计算密集型的任务,除了多进程,就是分布式计算,如何用 Python 实现分布式计算呢?今天分享一个很简单的方法,那就是借助于 Ray
- 当我们在使用validate等方法进行验证时,如果是错误,则会返回首页1、直接在请求头中在请求头header中,accept使用appcli
- 为什么Python中0.2+0.1不等于0.3大家请看下面的python程序代码:print(0.2+0.1)猜一猜运行结果是什么,是0.3