python如何实现从视频中提取每秒图片

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

python如何实现从视频中提取每秒图⽚
我是在做⾏⼈检测中需要将⼀段视频变为图⽚数据集,然后想将视频每秒钟的图⽚提取出来。

语⾔:python
所需要的库:cv2,numpy (⾃⾏安装)
opencv中提供了读取视频每帧图⽚的函数,下⾯的代码可以将视频的每帧图⽚提取出来。

注:我的视频名字叫 2.mp4 ,提取图⽚保存⽬录需要⾃⼰建⼀个名字叫 output 的⽂件夹。

# 导⼊所需要的库
import cv2
import numpy as np
# 定义保存图⽚函数
# image:要保存的图⽚名字
# addr;图⽚地址与相⽚名字的前部分
# num: 相⽚,名字的后缀。

int 类型
def save_image(image,addr,num):
address = addr + str(num)+ '.jpg'
cv2.imwrite(address,image)
# 读取视频⽂件
videoCapture = cv2.VideoCapture("2.mp4")
# 通过摄像头的⽅式
# videoCapture=cv2.VideoCapture(1)
#读帧
success, frame = videoCapture.read()
i = 0
while success :
i = i + 1
save_image(frame,'./output/image',m)
if success:
print('save image:',i)
success, frame = videoCapture.read()
现在我想按秒提取,只要我们能知道视频每秒有多少帧,然后在上⾯的代码基础上每隔那么多帧提取⼀次就⾏了,这就需要查看视频的帧率。

⼀般情况下随便⽤⼀个播放器打开视频后右键查看其属性就可以看到帧率。

现在我的视频帧率为12 ,每隔12帧提取⼀次就可以得到每秒的图⽚。

代码如下:
# 导⼊所需要的库
import cv2
import numpy as np
# 定义保存图⽚函数
# image:要保存的图⽚名字
# addr;图⽚地址与相⽚名字的前部分
# num: 相⽚,名字的后缀。

int 类型
def save_image(image,addr,num):
address = addr + str(num)+ '.jpg'
cv2.imwrite(address,image)
# 读取视频⽂件
videoCapture = cv2.VideoCapture("2.mp4")
# 通过摄像头的⽅式
# videoCapture=cv2.VideoCapture(1)
#读帧
success, frame = videoCapture.read()
i = 0
timeF = 12
j=0
while success :
i = i + 1
if (i % timeF == 0):
j = j + 1
save_image(frame,'./output/image',j)
print('save image:',i)
success, frame = videoCapture.read()
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

相关文档
最新文档