write read open grabar and python opencv ffmpeg windows-10 avi

read - Python y OpenCV: no se pueden escribir archivos de video avi legibles



save video python opencv (2)

Estoy usando OpenCV 2.4.9 en Ubuntu 14.04, y el siguiente código funciona bien para mí:

import cv2 import cv cap = cv2.VideoCapture(0) ret,img=cap.read() height , width , layers = img.shape fps=20 video = cv2.VideoWriter("rec_out.avi", cv.CV_FOURCC(*''DIVX''), fps, (img.shape[1], img.shape[0])) while True: ret,img=cap.read() height , width , layers = img.shape video.write(img) cv2.imshow(''Video'', img) #video.write(img) if(cv2.waitKey(10) & 0xFF == ord(''b'')): break cv2.destroyAllWindows() video.release()

Tengo un código como este:

import numpy as np import cv2 cap = cv2.VideoCapture(''C:/Users/Hilman/haatsu/drive_recorder/sample/3.mov'') # Define the codec and create VideoWriter object fourcc = cv2.VideoWriter_fourcc(*''XVID'') out = cv2.VideoWriter(''output.avi'', fourcc, 20.0, (640,480)) while(cap.isOpened()): ret, frame = cap.read() if ret==True: frame = cv2.flip(frame,0) # write the flipped frame out.write(frame) cv2.imshow(''frame'',frame) if cv2.waitKey(1) & 0xFF == ord(''q''): break else: break # Release everything if job is finished cap.release() out.release() cv2.destroyAllWindows()

Pero el output.avi no se puede reproducir.

Probado también cambie el out = cv2.VideoWriter(''output.avi'', fourcc, 20.0, (640,480)) a algo como esto (como lo sugieren algunas personas) out = cv2.VideoWriter(''output.avi'', -1, 20.0, (640,480)) . Pero cuando hice esto, recibí este mensaje

OpenCV: FFMPEG: tag 0xffffffff/'' '' is not found (format ''avi / AVI (Audio Video Interleaved)'')'' .

¿Cual podría ser el problema? Estoy usando Windows 10 por cierto.


Tampoco pude conseguir que ese código se ejecutara en mi máquina con Windows 10.

Entonces esto es lo que hice:

  1. Seguí estas instrucciones e instalé la última versión de ffmpeg en la máquina:
    1. Descargue la última compilación estática para Windows y luego extraiga los archivos. Es posible que necesites 7zip para extraer.
    2. Crea una carpeta en C: / llamado ffmpeg
    3. Copie los contenidos de los archivos extraídos en C: / ffmpeg
    4. Edite su variable de entorno PATH para agregar al final la siguiente entrada: C:/ffmpeg/bin;
    5. Confirme que todo está funcionando correctamente abriendo un indicador de cmd e ingrese lo siguiente (tenga en cuenta que es posible que necesite ejecutar cmd como administrador): ffmpeg -version
  2. Modificó su código de la siguiente manera:

_

import numpy as np import cv2 import os base_path = ''C://Users//Hilman//haatsu//drive_recorder//sample//' cap = cv2.VideoCapture(''%s3.mov'' % base_path) i = 0 while(cap.isOpened()): ret, frame = cap.read() if ret==True: frame = cv2.flip(frame,0) cv2.imwrite(os.path.join(base_path, str(i) + ''.png''), frame) i = i + 1 else: break # Release everything if job is finished cap.release()

  1. Abrió un símbolo del sistema en C:/Users/Hilman/haatsu/drive_recorder/sample y ejecutó el siguiente comando: ffmpeg -framerate 29 -i %d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4
  2. Su video debe guardarse como out.mp4 .