2017-02-17 8 views
0

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 .

+0

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

Antwort

0

Stellen Sie sicher, dass die Abmessungen von inverted den Abmessungen des size-Parameters in der videoWriter-Definition entsprechen.

Verwenden Sie auch 'M','P','4','V' Codec mit dem .mp4-Container.