I have a problem with writing a toy example video using opencv2.3.1 VideoWriter, here is how I do it:
writer = cv2.VideoWriter('test1.avi',cv.CV_FOURCC('P','I','M','1'),25,(640,480))
for i in range(1000):
x = np.random.randint(10,size=(480,640)).astype('uint8')
writer.write(x)
#del writer (with or without tested)
I tried every possible combination resulting with a 0 bytes file if the extension was mpg, and 5.5kb if it was avi. I should say that some pointed out that I should build the ffmpeg library from source and not apt-get it. Well I did that on a fresh machine based on the help of this site http://vinayhacks.blogspot.com/2011/11/installing-opencv-231-with-ffmpeg-on-64.html. which also presented an error while compiling opencv(the error was related to ffmpeg). Now I am really out of ideas, How to generate a video using OPENCV?
Thanks in advance
VideoWriter has last argument isColor with default value True.
So if you change it to False then you can write your 2D arrays.
import cv2
import numpy as np
writer = cv2.VideoWriter('test1.avi', cv2.VideoWriter_fourcc(*'PIM1'), 25, (640, 480), False)
for i in range(100):
x = np.random.randint(255, size=(480, 640)).astype('uint8')
writer.write(x)
Which OS are you using? Are you sure your system have PIM1 codec installed?
I use windows, and I can use cv.FOURCC(*"DIB ") for uncompressed video, or use -1 to show a codec dialog.
After install ffdshow, I can use cv.FOURCC(*"ffds") to encode the video by MPEG-4.
Hello I am new to opencv and I had this same problem. It appears that the writer.write(x) Needs x to be an array whit RGB values and not scalars. I solved the issue by doing this:
import cv2
import cv2.cv as cv
import numpy as np
writer = cv2.VideoWriter('test1.avi',cv.CV_FOURCC('P','I','M','1'),25,(640,480))
for i in range(1000):
x = np.random.randint(255,size=(480,640)).astype('uint8')
x = np.repeat(x,3,axis=1)
x = x.reshape(480, 640, 3)
writer.write(x)
I assume there are cleaner ways to do it but I haven't found any.
来源:https://stackoverflow.com/questions/9280653/writing-numpy-arrays-using-cv2-videowriter