Opencv видео прочитано и сохранено снова повреждено - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь прочитать видео, перевернуть кадры и затем сохранить его, но окна вывода видео сообщают, что оно повреждено и не воспроизводится.

import cv2 as cv

cap = cv.VideoCapture('wtf.avi')
fourcc = cv.VideoWriter_fourcc(*'DIVX')
out= cv.VideoWriter('output.avi', fourcc, 20.0, (640,480))

while(cap.isOpened()):
    ret, frame = cap.read()
    if ret == True:
        frame = cv.flip(frame, 0)
        # write the flipped frame
        out.write(frame)
        cv.imshow('frame', frame)
        if cv.waitKey(35) & 0xFF == ord('q'):
            break
    else:
        break

# Release everything if job is finished
cap.release()
out.release()
cv.destroyAllWindows()

1 Ответ

0 голосов
/ 15 ноября 2018

По моему опыту, если у вас не установлен кодек или другая версия кодека, установленного в вашей ОС, то, с помощью которого вы пытаетесь сохранить видео, может спровоцировать его сбой.

Даже если этокусок кода на C ++, это может помочь вам:

// Load input video or camera stream
cv::VideoCapture cap(0);
if (!cap.isOpened())
{
    std::cout << "!!! Input video could not be opened" << std::endl;
    return 1;
}

float fps = cap.get(CV_CAP_PROP_FPS);
int cols = cap.get(CV_CAP_PROP_FRAME_WIDTH);
int rows = cap.get(CV_CAP_PROP_FRAME_HEIGHT);


// Setup output video
cv::VideoWriter video("output.avi", cap.get(CV_CAP_PROP_FOURCC), fps, cv::Size(cols,rows),true)
...