使用背景

有时候我们需要把文件夹中的视频按照一定的帧率截取图片,如一秒取三张,为了实现这一需求,我特地编写了代码实现,并且附上了十分详细的说明,为了方便大家改代码实现自己需求(主要为了照顾刚学python的或者只需要用这一需求的小伙伴),本博文的特点如下:

  • 直接改变输入文件夹和输出文件夹的位置,就可以实现功能
  • 输出的图片能按照一定格式命名,这里是以20210823_0001命名
  • 逐一遍历文件夹中视频,序号之间可以连续(也可不连续,需要改代码)
  • 利用双线性插值方法,就算图片变大了,也能保证分辨率(关于双线性,这里只是调用opencv方法实现,具体实现代码和原理可看我下一篇博文)
  • 代码解释十分详细,一看就懂

十分详细代码实现

首先先说明需要自己修改的参数,代码如下:

filepath = 'C:/Users/ZFG/Desktop/1111' #视频文件夹所在目录
data='20210823'   #要是储存的文件为20210823_0001格式,则为前半部分
save_filename='C:/Users/ZFG/Desktop/2222/'  #储存图片的文件夹的地址
timeF = 6   #根据一秒取多少帧设置,比如我的视频是24帧/秒,取6则一秒取三张
kernal=(700,700)  #设置输出的大小,根据自己需求设置

然后再设置一个方法,来储存截取后的图片:

def saveImage(image,SaveAddress,num):  #image为读取的图片,SaveAddress为需要存的地址,num为截取图片时候记录的序号address= SaveAddress+data+'_'+str(num).zfill(4)+'.jpg'   #这里设置输出格式cv2.imwrite(address,image) #这里为存图片

之后读取文件夹:

pathDir = os.listdir(filepath)
i=0
j=0
for allDir in pathDir:  #遍历文件夹中的每一个视频videopath =filepath+'/'+ allDirvideoCapture=cv2.VideoCapture(videopath)  #输入绝对路径untill,picture=videoCapture.read()  #读取视频,视频读取完的时候,返回的untill为False,表示视频读取完毕while untill:i+=1if (i%timeF==0):    #根据原视频的帧率看截图图片的频率j+=1picture=cv2.resize(picture,kernal,cv2.INTER_LINEAR)  #这里调用了opencv中的双线性插值法,要是图片增加很快,保证了图片精度saveImage(picture,save_filename,j)  #调用我们之前描述的方法passuntill, picture = videoCapture.read()  #再次看视频是否结束,结束了则until为False

将上诉代码结合后,最终程序如下所示:

import cv2
import osi = 0
j = 0
pathDir = os.listdir(filepath)
filepath = 'C:/Users/ZFG/Desktop/1111'
data='20210823'
save_filename='C:/Users/ZFG/Desktop/2222/'
timeF = 6
kernal=(700,700)
def saveImage(image,SaveAddress,num):address= SaveAddress+data+'_'+str(num).zfill(4)+'.jpg'cv2.imwrite(address,image)
for allDir in pathDir:videopath =filepath+'/'+ allDirvideoCapture=cv2.VideoCapture(videopath)untill,picture=videoCapture.read()while untill:i+=1if (i%timeF==0):j+=1picture=cv2.resize(picture,kernal,cv2.INTER_LINEAR)saveImage(picture,save_filename,j)passuntill, picture = videoCapture.read()

最后看下效果吧:
第一张图是文件夹中的视频,帧率是24帧/秒,第二张图是一秒取三张图片后,图片储存在文件夹中的图。

python-opencv文件夹中所有视频按顺序截图片并按顺序命名相关推荐

  1. Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频

    android tv box ---- 插入u盘直接播放指定文件夹中的视频思路: 1.监听u盘插入广播 2.遍历指定目录下的所有文件,找到视频文件 3.将符合条件的文件加入播放集合中 4.循环播放 n ...

  2. 使用Python读取文件夹中的图片

    文章目录 Python创建新的文件夹 Python读取文件夹中的图片内容以及存取   一个文件夹中含有大量的图片文件,jpg格式和png格式的.需要从中选出一些比较适合电脑分辨率的,也就是宽度大于高度 ...

  3. Python提取文件夹中的所有文件名输出到excel

    Python提取文件夹中的所有文件名输出到excel import os import openpyxldef getfilelist(dir,file_out,sheet_out):filelist ...

  4. u盘里android文件夹作用,Android应用开发android tv box ---- 插入u盘直接播放指定文件夹中的视频...

    本文将带你了解Android应用开发android tv box ---- 插入u盘直接播放指定文件夹中的视频,希望本文对大家学Android有所帮助. android tv box ---- 插入u ...

  5. python把文件夹中所有的图片按顺序转换成视频

    最近需要把文件夹中多个图片转换成视频,试了一些软件发现都不好使.刚好最近又接触了 python+opencv的相关知识,索性参考网上代码,自己写了一个.发现才十几行..果然人生苦短,我用python. ...

  6. python检测文件夹中新增文件_python检测文件夹变化,并拷贝有更新的文件到对应目录的方法...

    检测文件夹,拷贝有更新的文件到对应目录 2016.5.19 亲测可用,若有借鉴请修改下文件路径: 学习python小一个月后写的这个功能,属于初学,若有大神路过,求代码优化~ newcopy.py: ...

  7. python怎么创建文件夹_如何使用python在文件夹中创建文本文件?

    我试图在一个不是运行脚本的目录的文件夹中创建一个.txt文件.我有一个脚本所在的文件夹,我可以在脚本所在的同一个目录中创建该文件夹,但它不会在该文件夹中创建文本文件.我通常遇到两个错误中的一个:Per ...

  8. python从文件夹中提取指定文件_使用Python实现从各个子文件夹中复制指定文件的方法...

    之前用来整理图片的小程序,拿来备忘,算是使用Python复制文件的一个例子. # -*- coding: utf-8 -*- #程序用来拷贝文件并输出图片采集日期等其他信息到Excel中 #文件夹结构 ...

  9. python保存文件夹中的文件路径(绝对路径)

    保存文件夹中的文件路径(绝对路径). # !/usr/bin/env python # -*- encoding: utf-8 -*-import osimg_path = '/home/jjuv/D ...

最新文章

  1. 项目性能优化(MySQL读写分离、MySQL主从同步、Django实现MySQL读写分离)
  2. 全球只有4个人通关的游戏!不过如此
  3. 释疑のSmartforms点打印无反应
  4. python游戏开发的五个案例分享
  5. 活久见,自己创造的框架竟然比开源的好用
  6. Python链家租房信息爬虫和高德地图展示
  7. Bagging和Boosting 策略及其区别
  8. 魔兽世界lua笔记(4、集合石插件修改,实现集合石亮灯hack)
  9. 使用Eclipse IDE的技巧
  10. RxJava操作符学习APP
  11. 微软新专利暗示:多功能Surface Pen触控笔可能问世
  12. 理解时间:时间时区那些事
  13. date( 1day ) php,PHP_使用PHP的日期与时间函数技巧,PHP的日期时间函数date() 1,年- - phpStudy...
  14. hadoop ha搭建 namenode格式化失败等错误
  15. 焊接过程计算机模拟研究,焊接过程的数值模拟
  16. (附源码)spring boot大学生综合素质测评系统 毕业设计 162308
  17. R语言ggplot2可视化:使用patchwork包将3个ggplot2可视化结果横向组合(三幅图各占比例为33.3%,加和为100%)
  18. mysql数据类型、字段类型
  19. Build and run UDK2021.8 Emulator in Deepin-20.2.4
  20. c语言中将32位值赋给16位变量,C语言数据类型和变量-参考.ppt

热门文章

  1. 浏览器无法访问某个网站,其他网站都正常
  2. OpenCV:Scalar数据类型理解
  3. python小波变换去噪
  4. autocad2014点击保存闪退_AutoCAD2014闪退的具体原因和解决方法介绍
  5. 实用干货!正规的问答推广平台有哪些及其优势
  6. python—基础练习2
  7. MATLAB希尔伯特黄变换HHT
  8. 正则表达式包含某字符串且不包含某些字符串
  9. 【Linux编程】三分钟让你学会Linux下用户密码更改
  10. 阿里拍卖 捡漏 一元起拍