Я использую Visual Studio 2008 и OpenCV 2.4.5.
У меня есть класс, который содержит обработанные видеокадры, и я хотел бы сохранить их как видеофайлы. Я создал объект cv :: VideoWriter в конструкторе и записал кадры в объект cv :: VideoWriter, выполнив цикл и успешно получив желаемое видео. Проблема начинается после получения первого видео.
Я также иногда хочу завершить этот видеофайл с помощью cv :: VideoWriter :: release () и повторно использовать этот объект, открывая его с другим именем, как показано ниже:
outputVideo.release();
outputVideo.open("D:\\example2.avi", CV_FOURCC('D','I','V','X'), 15, videoSize, true);
но я понял, что VideoWriter во второй раз не создает никакого файла по связанному пути, даже если функция cv :: VideoWriter :: isOpened () возвращает true, что интересно.
Но что более интересно, я также не могу создать и использовать любой другой экземпляр объекта cv :: VideoWriter в другом месте моего класса. Что еще интереснее, я могу создавать и использовать несколько экземпляров только в Конструкторе.
Перепробовал много вещей; указатели, разные кодеки, создание объектов в конструкторе и использование их в других методах, без посторонней помощи.
Единственное, что я вижу, что я могу создать только один экземпляр и использовать его только один раз, я не могу использовать его снова после его выпуска, или я не могу создать новый экземпляр и открыть его, если я не в конструкторе моего класс, даже метод isOpened () всегда возвращал true (файл не создается по связанному пути, кроме как в первый раз). Не нашел ничего, чтобы помочь мне об этой странной проблеме в интернете.
Любая помощь очень ценится, потратил 3 часа и не мог понять, почему.
Я понял, что эта проблема вызвана отсутствием opencv_ffmpeg.dll файл. Но все же странно для меня, что это работает только один раз без желаемой DLL. Я не понимаю, как это работает без этого файла DLL.