¿Cómo exportar video como .mp4 usando openCV?

Estoy tratando de exportar video como .mp4 con openCV. He probado varios codecs pero por ahora no tuve éxito.

Esta es una función que construye un video a partir de cuadros:

def create_movie(self, out_directory, fps, total_frames): img1 = cv2.imread("temp/scr0.png") height, width, layers = img1.shape codec = cv2.cv.CV_FOURCC('X','V','I','D') video = cv2.VideoWriter(out_directory, codec, fps, (width, height)) for i in range(total_frames): img_name = "temp/scr" + str(i) + ".png" img = cv2.imread(img_name) video.write(img) video.release() cv2.destroyAllWindows() 

Normalmente recibo el siguiente mensaje de error, usando diferentes códecs:

 Tag XVID/0x44495658 incompatible with output codec id '13' 

¿Es posible hacer esto y cómo?

Hay una solución no directa. Exporta como .avi y luego lo convierte a .mp4 usando la llamada de python’s que llama al comando de terminal.

 from subprocess import call dir = out_directory.strip(".avi") command = "avconv -i %s.avi -c:v libx264 -c:a copy %s.mp4" % (dir, dir) call(command.split()) 

Puede ser un poco tarde para responder esto, pero si desea escribir un archivo .MP4 con OpenCV, intente esto:

 import cv2 #your previous code here fourcc = cv2.VideoWriter_fourcc(*'a\0\0\0') out = cv2.VideoWriter('out.mp4', fourcc, fps, res) #the character '\0' is the Null-Terminator or simply 0x00 in the ASCII-Table #tag: *'a\0\0\0' corresponds to 0x00000061 #your following code here