Как сделать кадры для видео с помощью cv2.VideoWriter в функции - PullRequest
0 голосов
/ 06 июня 2019

Я не могу заставить cv2.VideoWriter записывать какие-либо кадры в видео, когда объект cv2.VideoWriter передается через вызов функции. Я не знаю, может ли это быть неизменный объект, и это может быть причиной?

Я знаю, что это работает, когда я просто добавляю случайные отдельные кадры без используемых функций.

Я попытался просто вернуть и сохранить объект VideoWriter из каждого вызова функции без результатов.

Это работает:

import cv2

fourcc = cv2.VideoWriter_fourcc(*'XVID')
vid = cv2.VideoWriter('vid.avi', fourcc, 1, (512, 512))
img = cv2.imread('dog.png')
vid.write(img)
img = cv2.imread('cat.png')
vid.write(img)
vid.release()

Но это не относится к вызову функции с vid в качестве аргумента:

import cv2

def add_img(vid):
   img = cv2.imread('dog.png')
   vid.write(img)
   img = cv2.imread('cat.png')
   vid.write(img)

fourcc = cv2.VideoWriter_fourcc(*'XVID')
vid = cv2.VideoWriter('vid.avi', fourcc, 1, (512, 512))
add_img(vid)
vid.release()

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

1 Ответ

0 голосов
/ 06 июня 2019

Нет, это не ожидаемое поведение, я протестировал следующий код, и он просто отлично работает. Я создаю случайный видеофайл из 100 кадров, которые вводятся внутри метода.

import cv2
import numpy as np

fourcc = cv2.VideoWriter_fourcc(*'MJPG')
vid_ = cv2.VideoWriter('/Users/anmoluppal/PycharmProjects/testing/temp/vid.avi', fourcc, 30, (640, 480))


def create_image(vid):
    for i in xrange(100):
        mat = np.random.randint(0, 255, (480,640,3)).astype('uint8')

        vid.write(mat)

create_image(vid_)
vid_.release()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...