Je n'ai pas pu le trouver quand je l'ai cherché, alors je l'ai fait. Redimensionnez le fichier vidéo qui peut être ouvert avec OpenCV tout en le diluant aux images appropriées et enregistrez-le en tant que fichier image.
Je n'ai rien fait de difficile, donc je ne pense pas qu'il soit nécessaire d'expliquer quoi que ce soit.
video2jpg.py
import cv2
import os
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--video_path", type=str)
parser.add_argument("--save_dir", type=str, default="save/")
parser.add_argument("--interval", type=int, default=10)
parser.add_argument("--resize", type=int, default=None, nargs="+")
opt = parser.parse_args()
def video2jpg():
if not os.path.exists(opt.save_dir):
os.makedirs(opt.save_dir)
cap = cv2.VideoCapture(opt.video_path)
l_cap = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
for i in range(l_cap):
flag, frame = cap.read()
if flag == True and i % opt.interval == 0:
save_path = os.path.join(opt.save_dir, "{}_{}.jpg ".format(os.path.basename(opt.video_path).split(".")[0], i))
if opt.resize != None:
frame = cv2.resize(frame, (opt.resize[0], opt.resize[1]))
cv2.imwrite(save_path, frame)
print("{} has been saved".format(save_path))
if __name__ == "__main__":
video2jpg()
Par exemple, si vous souhaitez redimensionner douga.avi, qui existe dans le même répertoire que video2jpg.py, à 480 x 480 toutes les 10 images et l'enregistrer en tant que fichier image, entrez ce qui suit dans le terminal.
python3 video2jpg.py --video_path douga.avi --interval 10 --resize 480 480