Создание видео в оттенках серого с использованием Python, OpenCV и массивов numpy - PullRequest
1 голос
/ 10 октября 2011

Я использую 32-битный питон с OpenCV 2.3.1.Я пытаюсь записать двумерные массивы в видеопрограмму для opencv.Мой код похож на:

import cv2 as cv
import numpy as np

fourcc = cv.cv.CV_FOURCC('D', 'I', 'V', 'X')
writer = cv.cv.CreateVideoWriter("test.mpg", courcc, 10, (256,256))
if not writer:
     print "Error"
     sys.exit(1)

for ii in range(numberOfFrames):    
    numpy_image = GetFrame(ii)    #Gets a random image

    cv_image = cv.cv.CreateImage((256,256), cv.IPL_DEPTH_8U, 1)
    cv.cv.SetData(cv_image, numpy_image.tostring(), numpy_array.dtype.itemsize*1*256)

    cv.cv.WriteFrame(writer, cv_image)

del writer

Я вижу, что у меня есть соответствующие данные в моем массиве NumPy.И если я пытаюсь прочитать данные обратно из iplImage, я вижу, что они все еще там.Однако написание фрейма, похоже, ничего не делает.Файл не создается или выдает ошибку.Что я могу делать не так?Заранее спасибо.

1 Ответ

1 голос
/ 04 августа 2012

Я никогда не использовал OpenCV, но FWIW Я записываю массивы в видеофайлы, отправляя их в mencoder (основываясь на VideoSink классе VokkiCoder здесь ). Он очень быстрый и, кажется, работает довольно надежно, и он также будет писать видео RGB.

Вот паста . Он также включает класс VideoSource для чтения файлов фильмов в массивы с использованием очень похожего подхода.

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