Demo
- 相比于ffmepg转换,这种转换方式图片更加清晰。
import cv2
def transfer(video, save):
cap = cv2.VideoCapture(video)
num = 0
while True:
if cap.grab():
num += 1
if num % 30 == 1: # 每30帧截取一个图片
flag, frame = cap.retrieve() #解码并返回一个帧
if not flag:
continue
else:
cv2.imshow('video', frame)
new = save + "\\" + str(int(num / 60)) + ".jpg"
print('正在输出:' + str(int(num / 60)) + ".jpg(按Esc停止运行)")
cv2.imencode('.jpg', frame)[1].tofile(new)
# 检测到按下Esc时,break(和imshow配合使用)
if cv2.waitKey(10) == 27:
break
videoPath = 'D:\\视频\\2022-07-14.mp4'
imgPath = 'D:\\视频\\temp\\'
transfer(videoPath, imgPath)
print('运行完毕!')