视频转图片
代码只需:
① 设置每 x 帧截取一个图片 (可不修改) 1帧 =1/12秒
② 修改公共部分的文件名
import cv2
import os
def transfer(video, save): # 定义转换过程
cap = cv2.VideoCapture(video)
num = 0
frames_apart = 6 # 每 x 帧截取一个图片 1帧 =1/12秒 # 改 ①
common_jpg_name = '输出名字' # 片公共部分的文件名 # 改 ②
while True:
if cap.grab():
num += 1
if num % frames_apart == 1: # 每60帧截取一个图片 1帧 =1/12秒
flag, frame = cap.retrieve() # 解码并返回一个帧
if not flag:
continue
else:
cv2.imshow('video', frame)
jpg_filename = common_jpg_name + str(int(num / frames_apart + 1)) # 图片完整名字(除.jpg)
new = save + "\\" + jpg_filename + ".jpg" # 从 1 开始
print('正在输出:' + jpg_filename + ".jpg(按Esc停止运行)")
cv2.imencode('.jpg', frame)[1].tofile(new)
else: # 运行完毕自动退出
break
if cv2.waitKey(10) == 27: # 检测到按下Esc时退出
break
print('欢迎来到视频连续截图自动生成系统!')
video = input('请输入你的视频文件路径(要包含文件名后缀,如:F:/四级核心.mp4):') # 在此处设置你的视频文件路径以及图片输出路径
savedir = input('请输入你的图片输出文件夹路径(要用/单斜杠隔开):')
if not os.path.exists(savedir): # 如果输出目录不存在就创建一个
os.mkdir(savedir)
transfer(video, savedir) # 主程序启动
print('运行完毕!')