Python实现视频转图片集
需求来源
本人项目目前需要将网络收集的视频(后续会换成摄像头)送入一个训练好的图片处理神经网络中得到每帧的人体姿态,严格上说并不需要按帧生成图片,只需要按帧送入网络即可。但是出于便于展示和后续复用的目的还是把它作为一个模块单独写出来⑧。
需求分析
输入一个视频的地址,在对应视频的旁边生成一个文件夹,文件夹里放着该视频按帧提取的图片集
代码
import cv2
import os
#----------视频转JPG集----------
#输入视频地址
#在视频下文件夹输出视频图片集
def v2p(video_path):
out_path = video_path.split('.')[0]
if not os.path.exists(out_path):
os.mkdir(out_path)
conter = 1
#帧数:1帧1取,自行按需修改
interval = 1
video = cv2.VideoCapture(video_path)
while video.isOpened():#注意:cv读的图像依旧是BGR
is_read,frame = video.read()
print(is_read)
if is_read:
if conter % interval == 0:
file_name = '{}.jpg'.format(conter)
path = os.path.join(out_path,file_name)
print(path)
cv2.imwrite(path,frame)
if os.path.exists(path):
print('图片已生成')
else:
print('输出出现问题')
cv2.waitKey(1)
conter +=1
else:
print('读取生成完毕')
break
if __name__ == '__main__':
#绝对地址
video_path = r"xxx.mp4"
v2p(video_path)
成功输出后文件夹长这样
只是举例!只是举例!
- 上级目录
- TokyoCold.avi
- TokyoCold
- 1.jpg
- 2.jpg
- …
- n.jpg
注意
文件路径中不能包含任何中文(包括文件名),否则在调用cv2的imwrite会出现错误:不会报错,但是你本应该生成在此处的图片被送去了虚空。当本程序提醒你“输出出现问题”时,大概率就是这回事。
嘿嘿……