OpenCv_Python - конвертировать последовательность кадров в видео - PullRequest
0 голосов
/ 27 мая 2018

Я новичок в OpenCV, использующий Python.В настоящее время я работаю с проектом opencv с использованием языка Python.У меня есть набор видеоданных с именем «VideoDataSet / dynamicBackground / canoe / input», в котором хранится последовательность кадров изображения, и я хотел бы преобразовать последовательность кадров из пути к файлу в видео.Тем не менее, я получаю сообщение об ошибке при выполнении программы.Я пробовал разные кодеки, но все равно выдает те же ошибки. Может, кто-нибудь из вас прояснит, что может быть не так?Спасибо.Это мой пример кода:

import cv2
import numpy as np
import os
import glob as gb

filename = "VideoDataSet/dynamicBackground/canoe/input"

img_path = gb.glob(filename)

videoWriter = cv2.VideoWriter('test.avi', cv2.VideoWriter_fourcc(*'MJPG'), 
25, (640,480))

for path in img_path:
    img  = cv2.imread(path) 
    img = cv2.resize(img,(640,480))
    videoWriter.write(img)
print ("you are success create.")

Это ошибка:

Error prompt out:cv2.error: OpenCV(3.4.1) D:\Build\OpenCV\opencv-3.4.1\modules\imgproc\src\resize.cpp:4044: error: (-215) ssize.width > 0 && ssize.height > 0 in function cv::resize

(Примечание: проблема возникает с img = cv2.resize (img, (640,480)))

1 Ответ

0 голосов
/ 27 мая 2018

Возвращает эту ошибку, потому что вы пытаетесь изменить размер записи каталога!Вам нужно поставить:

filename = "VideoDataSet/dynamicBackground/canoe/input/*"

, чтобы он совпадал со всеми файлами в папке, когда вы его перетаскивали.Ошибка фактически предполагала, что исходное изображение имело либо нулевую ширину, либо нулевую высоту.Помещение:

print( img_path )

После того, как ваша попытка glob показала, что она возвращает только саму запись каталога.

Впоследствии вы обнаружили, что, хотя теперь он генерировал файл, он был поврежден.Это потому, что вы неправильно указываете кодек.Замените ваш параметр fourcc следующим:

cv2.VideoWriter_fourcc('M','J','P','G')

...