Skip to content Skip to sidebar Skip to footer

Resizing Video Using Opencv And Saving It

I'm trying to re-size the video using opencv and then save it back to my system.The code works and does not give any error but output video file is corrupted. The fourcc I am using

Solution 1:

The problem is the VideoWriter initialization.

You initialized:

out = cv2.VideoWriter('Video_output.mp4', fourcc, FPS, FrameSize, 0)

The last parameter 0 means, isColor = False. You are telling, you are going to convert frames to the grayscale and then saves. But there is no conversion in your code.

Also, you are resizing each frame in your code based on compress parameter.

If I use the default compress parameter:

cap = cv2.VideoCapture(0)

if cap.isOpened():
    ret, frame = cap.read()
    rescaled_frame = rescale_frame(frame)
    (h, w) = rescaled_frame.shape[:2]
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    writer = cv2.VideoWriter('Video_output.mp4',
                             fourcc, 15.0,
                             (w, h), True)
else:
    print("Camera is not opened")

Now we have initialized the VideoWriter with the desired dimension.


Full Code:

import time
import cv2


defrescale_frame(frame_input, percent=75):
    width = int(frame_input.shape[1] * percent / 100)
    height = int(frame_input.shape[0] * percent / 100)
    dim = (width, height)
    return cv2.resize(frame_input, dim, interpolation=cv2.INTER_AREA)


cap = cv2.VideoCapture(0)

if cap.isOpened():
    ret, frame = cap.read()
    rescaled_frame = rescale_frame(frame)
    (h, w) = rescaled_frame.shape[:2]
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    writer = cv2.VideoWriter('Video_output.mp4',
                             fourcc, 15.0,
                             (w, h), True)
else:
    print("Camera is not opened")

while cap.isOpened():
    ret, frame = cap.read()

    rescaled_frame = rescale_frame(frame)

    # write the output frame to file
    writer.write(rescaled_frame)

    cv2.imshow("Output", rescaled_frame)
    key = cv2.waitKey(1) & 0xFFif key == ord("q"):
        break


cv2.destroyAllWindows()
cap.release()
writer.release()

Possible Question: I don't want to change my VideoWriter parameters, what should I do?

Answer: Then you need to change your frames, to the gray image:

while cap.isOpened():
    # grab the frame from the video stream and resize it to have a# maximum width of 300 pixels
    ret, frame = cap.read()

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

Post a Comment for "Resizing Video Using Opencv And Saving It"