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 = ad()
i = 0
while success :
i = i + 1
save_image(frame,'./output/image',m)
if success:
print('save image:',i)
success, frame = ad()
现在我想按秒提取,只要我们能知道视频每秒有多少帧,然后在上⾯的代码基础上每隔那么多帧提取⼀次就⾏了,这就需要查看视频的帧率。⼀般情况下随便⽤⼀个播放器打开视频后右键查看其属性就可以看到帧率。现在我的视频帧率为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 = ad()
i = 0
timeF = 12学python看谁的视频比较好
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 = ad()
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论