Um ehrlich zu sein, denke ich, dass es besser ist, nach kostenlosen Tools zu suchen. In einer Umgebung, in der Sie keine freien Werkzeuge für Ihre Arbeit oder Ihren Umweg verwenden können Da ich jedes Mal etwas Ähnliches mache, schreibe ich es als Memorandum.
Videoquelle als erstes Argument. → Geben Sie beim Zugriff auf die Webkamera die Nummer 0-9 an. Geben Sie beim Zugriff auf eine Videodatei die Videodatei mit einem relativen oder absoluten Pfad an. Die Bildrate ist das zweite Argument. → Bildrate bei der Anzeige. Auslassungsverarbeitung, die nur die Wartezeit von cv2.waitKey () ändert. Die Reduktionsrate ist das dritte Argument. → Geben Sie an, wann Sie die Größe der auszuspuckenden JPG-Datei ändern möchten. Wenn 2 angegeben ist, ist das Bild 1/2 der Breite und Höhe.
#!/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