Pour être honnête, je pense qu'il vaut mieux chercher des outils gratuits. Dans un environnement où vous ne pouvez pas mettre d'outils gratuits dans votre travail ou votre détour Puisque je fais quelque chose de similaire à chaque fois, je l'écris sous forme de mémorandum.
Source vidéo comme premier argument. → Lors de l'accès à la webcam, spécifiez le nombre 0-9. Lors de l'accès à un fichier vidéo, spécifiez le fichier vidéo avec un chemin relatif ou absolu. La fréquence d'images est le deuxième argument. → Fréquence d'images lors de l'affichage. Traitement d'omission qui ne modifie que le temps d'attente de cv2.waitKey (). Le taux de réduction est le troisième argument. → Spécifiez lors du changement de la taille du fichier jpg à recracher. Si 2 est spécifié, l'image aura la moitié de la largeur et de la hauteur.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
video2jpg.py.
Usage:
video2jpg.py [<video source>] [<fps>] [<resize_rate>]
'''
import numpy as np
import cv2
import sys
print(__doc__)
try:
fn = sys.argv[1]
if fn.isdigit() == True:
fn = int(fn)
except:
fn = 0
print fn
try:
fps = sys.argv[2]
fps = int(fps)
except:
fps = 30
print fps
try:
resize_rate = sys.argv[3]
resize_rate = int(resize_rate)
except:
resize_rate = 1
print resize_rate
video_input = cv2.VideoCapture(fn)
if (video_input.isOpened() == False):
exit()
count = 0
while(True):
count += 1
count_padded = '%05d' % count
ret, frame = video_input.read()
height, width = frame.shape[:2]
small_frame = cv2.resize(frame, (int(width/resize_rate), int(height/resize_rate)))
cv2.imshow('frame', small_frame)
c = cv2.waitKey(int(1000/fps)) & 0xFF
write_file_name = count_padded + ".jpg "
cv2.imwrite(write_file_name, small_frame)
if c==27: # ESC
break
video_input.release()
cv2.destroyAllWindows()
Recommended Posts