ultimatet41 0 Жалоба Опубликовано March 11, 2011 Здравствуйте, возник следующий вопрос возможно ли с помощью opencv реализовать циклическую запись видео т.е. при достижении определённой длины ролика его нужно начать перезаписывать заменяя кадр за кадром, а не просто затирая? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано March 12, 2011 Думаю, что нет. Да и вообще, представь себе этот процесс. Если видео сжато каким-нибудь кодеком, то каждый кадр будет отличаться по размеру от предыдущего и покадровая перезапись приведёт с необходимости сдвига на диске всего ролика (!) на каждом кадре (!). Не уверен, что тебе нужно такое счастье. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 12, 2011 можно это реализовать в оперативной памяти с массивом картинок, если вам хватит памяти. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 12, 2011 А для чего это, если не секрет? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ultimatet41 0 Жалоба Опубликовано March 12, 2011 не секрет, хотел написать автомобильный видео регистратор для nokia n900, но теперь придется реализовывать данную функцию через два файла это конечно немного не то, но получится похоже. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Headmast 0 Жалоба Опубликовано March 14, 2011 Почему-то тоже подумал сразу про авторегистратор читая эту тему. Самое оптимально с двумя файлами. Менее ресурсоёмко и более надёжно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Headmast 0 Жалоба Опубликовано March 16, 2011 Решил попробовать записывать видео с вебки в файл и к сожалению обнаружил, что работает это все не очень хорошо. Версия библиотеки 1.1, среда разработки 2008. double fps = 15; CvVideoWriter *writer = cvCreateVideoWriter("test.avi",CV_FOURCC('X','V','I','D'), fps,size,1); for(; { IplImage* imageObject1; imageObject1 = cvCreateImage(cvSize(VI.getWidth(device1),VI.getHeight(device1)), IPL_DEPTH_8U, 3); VI.getPixels(device1, (unsigned char *)imageObject1->imageData, false, true); cvWriteFrame(writer, imageObject1); char c = cvWaitKey(100); if (c==27) { } cvReleaseImage(&imageObject1); } [/code] При таком коде, записанный кусок видео воспроизводится в 2 раза быстрее чем должен. cvWaitKey(100) double fps = 15 на скорость воспроизведения не влияют. Пока переходить на версию 2.2 пока не хочу. Так же вопрос почему из кодеков: CV_FOURCC('X','V','I','D') - кодек XviD CV_FOURCC('P','I','M','1') = MPEG-1 CV_FOURCC('M','J','P','G') = motion-jpeg (does not work well) CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 CV_FOURCC('U', '2', '6', '3') = H263 CV_FOURCC('I', '2', '6', '3') = H263I CV_FOURCC('F', 'L', 'V', '1') = FLV1 работает только первый. Когда ставлю -1, то в окне выбора кодеков многие из них есть. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Headmast 0 Жалоба Опубликовано March 17, 2011 Никто с такой проблемой не сталкивался? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
marfusha 0 Жалоба Опубликовано October 24, 2011 Согласна. OpenCV 2.0, Python 2.6. Та же проблема. Есть выход? Еще вопрос: возможно ли писать ч/б видео? (из одноканальных кадров) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Nuzhny 243 Жалоба Опубликовано October 24, 2011 Согласна. OpenCV 2.0, Python 2.6. Та же проблема. Есть выход? Проблема с fps? Ну так надо выставить реальное значение, захватываемое камерой. Еще вопрос: возможно ли писать ч/б видео? (из одноканальных кадров) Если камера поддерживает, то можно. Я таких камер пока не встречал. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
marfusha 0 Жалоба Опубликовано October 25, 2011 Если камера поддерживает, то можно. Я таких камер пока не встречал. В смысле захватив кадр перевести его в 1-канальн ч/б, записать cvWriteFrame Проблема с fps? Ну так надо выставить реальное значение, захватываемое камерой. С родной частотой (30 fps) выходит еще быстрее Ура! Победила ч/б Оказывается, в VideoWritere есть аргумент is_color, который я упорно игнорировала... <хорошо иногда быть идиотом...> Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
marfusha 0 Жалоба Опубликовано February 22, 2012 Барахлит кодек FLV: записывает нечитаемое видео. (все тот же opencv2.0+python2.6+winXP) Очень нужно записать *.flv (или найти кодек H264) Как быть? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано February 22, 2012 Похоже это известный баг, вот: https://code.ros.org/trac/opencv/ticket/1576 Можно попытаться использовать консольный конвертер. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах