2016-01-24 3 views
2

Я хочу захватить изображение с USB-камеры каждые 2 секунды и сохранить его в видеофайле. Проблема с этим, как я вижу, заключается в следующем: видеофайл не будет закрыт, если компьютер или ноутбук по какой-то причине опустится или остановится - и все изображения будут потеряны.append time lapse image to video file

Мой вопрос: есть ли способ добавить каждое снятое изображение в видеофайл и снова закрыть файл, чтобы избежать потери? Opencv, похоже, не предлагает эту функцию - ни SFML.

Im развивающийся в ubuntu с использованием g ++ и SFML.

спасибо.

ответ

0

У меня был этот выпуск раньше. Честно говоря, я не сделал глубоких поисков. Я почти уверен, что есть некоторая недокументированная часть video writer, которая может содержать то, что вы ищете. Тем не менее, я могу предоставить вам сложное решение, которое хорошо подходит для небольших видеороликов. Сохраните каждый cv::Mat в std::vector и каждый кадр (или каждый n кадров), serializevector до hard disk. Затем полностью очистите vector. После того, как вы закончили, deserialize все данные и напишите один раз в видеофайл с помощью OpenCV video writer.

В любом случае, это нехорошо делать, как я писал. должно быть другое решение. Вы можете вставить код OpenCV и посмотреть, что происходит в destructor класса videoWriter.