Save grayscale video in OpenCV?

There are 3 things to keep in mind when you are trying to write Grayscale image in video writer. 1. while reading the image,keep 0 followed by ','

image = cv2.imread("data/PCB.jpg",0)

2&3. While creating the video writer, declare shape in opposite way and keep 0 followed by ',' as we did in step 1

fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (image.shape[1],image.shape[0]),0)

For Windows OS try:

out = cv2.VideoWriter(outfilename, fourcc, fps, (width, height), 0)

It is possible that .DIVX is looking for a 3-channel BGR image to write, but you're only providing it a single channel image, since you're trying to write a grayscale image

Try doing this:

frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)

essentially this will try to convert your greyscale image to BGR image. While your pixel values will remain gray, this will change frame to a 3-channel image

Tags:

Python

Opencv