2

opencv を使用してビデオのサイズを変更し、システムに保存しようとしています。コードは機能し、エラーは発生しませんが、出力ビデオ ファイルが破損しています。私が使用している fourcc は mp4v で、.mp4 でうまく動作しますが、それでも出力ビデオは破損しています。助けが必要。

import numpy as np
    import cv2
    import sys
    import re
    vid=""
    
    if len(sys.argv)==3:
        vid=sys.argv[1]
        compress=int(sys.argv[2])
    else:
        print("File not mentioned or compression not given")
        exit()
    
    if re.search('.mp4',vid):
        print("Loading")
    else:
        exit()
    
    cap = cv2.VideoCapture(0)
    ret, frame = cap.read()
    
    def rescale_frame(frame, percent=75):
        width = int(frame.shape[1] * percent/ 100)
        height = int(frame.shape[0] * percent/ 100)
        dim = (width, height)
        return cv2.resize(frame, dim, interpolation =cv2.INTER_AREA)
    
    FPS= 15.0
    FrameSize=(frame.shape[1], frame.shape[0])
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')
    
    out = cv2.VideoWriter('Video_output.mp4', fourcc, FPS, FrameSize, 0)
    
    while(cap.isOpened()):
        ret, frame = cap.read()
    
        # check for successfulness of cap.read()
        if not ret: break
        
        rescaled_frame=rescale_frame(frame,percent=compress)
        # Save the video
        out.write(rescaled_frame)
    
        cv2.imshow('frame',rescaled_frame)
        if cv2.waitKey(1) & 0xFF == ord('q'):
             break
    
    cap.release()
    out.release()
    cv2.destroyAllWindows()
4

1 に答える 1