Python 3.5.2, Anaconda 4.2.0 unter Windows 10. OpenCV installiert von conda
, Version 3.1.0.opencv und python 3 - kann keine Videoframes auf Platte schreiben
Ich versuche, eine Videodatei zu verarbeiten, indem ich sie öffne, jeden Rahmen transformiere und das Ergebnis in eine neue Videodatei setze. Die Ausgabedatei ist erstellt, aber die Größe beträgt etwa 800 Bytes und es ist leer. Die Eingabedatei hat ~ 4.000 Frames und es ist ungefähr 150 MB.
Hier ist mein Code, der dem Leitfaden zur OpenCV-Dokumentation sehr genau folgt.
import cv2
import progressbar
# preprocess video
# args.input is a valid file name
outname = 'foo.mp4'
cap = cv2.VideoCapture(args.input)
codec = int(cap.get(cv2.CAP_PROP_FOURCC))
framerate = app_config.camera.framerate #240
size = (app_config.camera.width, app_config.camera.height) #1080 x 720
vw = cv2.VideoWriter(filename=outname, fourcc=codec, fps=framerate, frameSize=size, isColor=False)
curframe = 0
with progressbar.ProgressBar(min_value=0, max_value=int(cap.get(cv2.CAP_PROP_FRAME_COUNT))) as pb:
while cap.isOpened():
ret, frame = cap.read()
if ret:
#update the progress bar
curframe += 1
pb.update(curframe)
# convert to greyscale
grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# invert colors
inverted = cv2.bitwise_not(grey)
vw.write(inverted)
#cv2.imshow('right', right)
#if cv2.waitKey(1) & 0xFF == ord('q'):
# break
else:
break
cap.release()
vw.release()
cv2.destroyAllWindows()
Ich erhalte den folgenden Fehler:
OpenCV: FFMPEG: tag 0x7634706d/'mp4v' is not supported with codec id 13 and format 'mp4/MP4 (MPEG-4 Part 14)'
OpenCV: FFMPEG: fallback to use tag 0x00000020/' ???'
ich ähnliche Fehler (wie auch eine Warnung, dass ich eine falsche Umgebungsvariable für h.264 Bibliothekspfad haben), wenn ich versuche, codec = cv2.VideoWriter_fourcc(*'H264')
einstellen .
Was bekommen Sie, wenn Sie "cv2 .__ version__" eingeben, nur um sicherzustellen, dass Sie das richtige opencv geladen haben. Sind Sie sicher, dass die Höhe und die Höhe der "foo.mp4" 1080 * 720 sind? Wenn nicht, wird eine leere Videodatei geschrieben. Wenn diese nicht funktionieren, versuchen Sie, "fourcc = cv2.VideoWriter_fourcc ('m', 'p', '4', 'v')", "video = cv2.VideoWriter()", "video.open (outname, fourcc, framerate, size, False, hoffe das hilft! – crazjo