Перейти к содержимому
Compvision.ru
Argon

Запись видео в файл

Recommended Posts

Как это делается я знаю(благо в интернете полно информации), но вот сам вопрос таков: почему не формирует выходной файл?

задаю значения переменым

    fps = 16;

    sizeForFile = cvSize(640,480);

    cFileForWriteInFile = "MouseTrecking.avi";

    writer = cvCreateVideoWriter(cFileForWriteInFile, CV_FOURCC('X','V','I','D'), fps, sizeForFile, 0);
хочу провеести запись в файл:
 IplImage imgforwrite = matOriginal;

        IplImage* temp = &imgforwrite;


        cvWriteFrame(writer, temp);

в итоге у меня получается только пустой файл с названием ...

ЗЫ: думал что некорректно конвертируеся файл, но все ок...

ЗЫЫ: на кодак не ругается, все находит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

отладчик выдает следующее:

writer	 @0x1d051aa0	

		[CvVideoWriter]		

			[vptr]	0x9afe28	

			[0]	0x7aaf4c <CvVideoWriter_FFMPEG_proxy::~CvVideoWriter_FFMPEG_proxy()>	

			[1]	0x7aaf28 <CvVideoWriter_FFMPEG_proxy::~CvVideoWriter_FFMPEG_proxy()>	

			[2]	0x7aaa74 <CvVideoWriter_FFMPEG_proxy::writeFrame(_IplImage const*)>	

			[3]	0x7aadfc <CvVideoWriter_FFMPEG_proxy::open(char const*, int, double, CvSize, bool)>	

			[4]	0x7aae9c <CvVideoWriter_FFMPEG_proxy::close()>	

			ffmpegWriter	0x1d0bb6a8	void *

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Что возвращает cvWriteFrame?

2. Ты закрываешь файл после записи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Что возвращает cvWriteFrame?

2. Ты закрываешь файл после записи?

1) что то я не совсем понимаю что долна возвращать эта фукция... ...вроде она должна только инициировать запись кадра в файл...

2) пробовал закрывать, не помогло...

зы: пробую просматривать записываемые кадры, все гуд на просмотре, а записываться не хотят...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1) что то я не совсем понимаю что долна возвращать эта фукция... ...вроде она должна только инициировать запись кадра в файл...

из описания функции очевидно, что она возвращает число. Разумно предположить, что это число что-то означает. Скорее всего оно сигнализирует об успешной или нет записи кадра. Что в принципе подтверждается просмотром исходников. Так какое значение это числа?

2) пробовал закрывать, не помогло...

зы: пробую просматривать записываемые кадры, все гуд на просмотре, а записываться не хотят...

Попробуй тогда использовать различные, установленные в твоей системе кодеки, а не только xvid.

Ну и третье.

У тебя есть opencv_ffmpeg*.dll? Если есть, то удали/перемести/переименуй её. Помогло?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

из описания функции очевидно, что она возвращает число. Разумно предположить, что это число что-то означает. Скорее всего оно сигнализирует об успешной или нет записи кадра. Что в принципе подтверждается просмотром исходников. Так какое значение это числа?

Попробуй тогда использовать различные, установленные в твоей системе кодеки, а не только xvid.

Ну и третье.

У тебя есть opencv_ffmpeg*.dll? Если есть, то удали/перемести/переименуй её. Помогло?

возвращает чило 0....

установил все кодаки...

opencv_ffmpeg*.dll удалить нельзя т.к. он используется при обработку видео файлов... а как только скрываю его, то вся программа перестает работать...

проблема актуальна....

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А такой фрагмент работает?

// Запишем все в видеофайл
VideoWriter vw=VideoWriter::VideoWriter("output.mpeg", CV_FOURCC('P','I','M','1'), 20, Size(W,H));
...
vw<<Img; // Запись кадра в видеофайл
...
// Освободим видеофайл
vw.release(); [/code]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

возвращает чило 0....

Значит, кадр не записывается.

установил все кодаки...

opencv_ffmpeg*.dll удалить нельзя т.к. он используется при обработку видео файлов... а как только скрываю его, то вся программа перестает работать...

проблема актуальна....

Если её удалить, то OpenCV должен использовать установленные в системе vfw и/или DShow кодеки (зависит от сборки конкретной OpenCV). Если opencv_ffmpeg*.dll оставить, то будет использоваться ffmpeg. Раз при удалении у тебя всё перестаёт работать, то проблема именно с кодеками.

Ты многие перепробовал? А как их устанавливал? Рекомендую k-lite codeck pack Mega и при цстановке вручную выбрать все кодеки (галочки проставить в огромном их списке).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

[off]

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

[/off]

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ситуация напоминает бородатый анекдот:

Пилит мужик дерево, медленно пилит.

Другой мужик идет мимо, видит как тот медленно пилит и спрашивает: "Мужик, а что так медленно пилишь?".

Тот отвечает: "Так пила тупая."

Второй: "Ну так заточи!"

Первый: "Да некогда! Пилить надо!" :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

справился, а всего лишь стоило параметр is_color присвоить 1....

writer = cvCreateVideoWriter(cFileForWriteInFile, CV_FOURCC('X','V','I','D'), fps, sizeForFile, 1);

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×