Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Камера: захват изображений, видео и вывод на экран |
Автор: Xonxt 24.3.2011, 15:43 |
Доброе время суток. Вот столкнулся с такой проблемой: необходимо в рамках одного проекта обеспечить захват изображения с камеры, вывод его в окно (на какой-нибудь Контролз), а также иметь возможность в любой момент начать и остановить запись видео (в AVI), а также захват изображения (и сохранение его в файл). Требования: * работать должно как можно быстрее и занимать в памяти как можно меньше места; * камера - аналоговая (черно-белая, требует внешний источник питания и подключается через специальный USB-тюнер), поэтому не все программы и фреймворки её воспринимают. Для решения задачи я выбрал DirectShow.NET. Если есть варианты получше, пожалуйста, предлагайте. Проблема в чем. Насколько я понял, инициализация потоков Preview (вывод в окно), Захвата изображений и Захвата видео происходят на начальном этапе. И в предоставленных примерах было ИЛИ ТОЛЬКО захват изображений и Preview, ИЛИ ТОЛЬКО захват видео и Preview. Подружить их вместе у меня не получается. Помогите, пожалуйста, если кто-то в этом разбирается. Проект приложен в аттачменте. Здесь инициализация собственно потоков происходит в методе CaptureVideo(). Я выделил соответствующие фрагменты регионами (#region). Заметьте, что фрагменты PICTURE и VIDEO отказываются сосуществовать вместе. Гугл молчит... Как будто никому раньше не приходилось решать подобную задачу... |
Автор: Voyager 24.3.2011, 17:59 |
Тоже интересует этот вопрос. Вы не смотрели в сторону VLC, например вывод, остановка и продолженние - ActiveX контрол AxAXVLC.AxVLCPlugin2? Запись видео - через сам VLC (вызов с параметрами, либо еще как-то так, правда это может быть в другом потоке). |
Автор: Xonxt 30.3.2011, 08:21 |
В общем, более менее разобрался. Изображения по-прежнему снимаются тем же образом. А видео записывается многократным вызовом этого самого метода захвата изображения по таймеру и записью через AForge'вский AVI Writer. Конечно, не самый лучший вариант, но скорость работы всего этого добра вполне позволяет обеспечить достойный фреймрейт. А теперь вопрос. Может все-таки существует более быстрое и элегантное решение? Может все-таки есть другие более шустрые варианты? |
Автор: Ky7m 30.3.2011, 10:28 |
Можно попробывать OpenCV, а под неё обвертку EMGU. Пример http://habrahabr.ru/blogs/personal/78150/ А так же Aforge.Net, тоже позволяет осуществлять запись в файл. Но проблема в том, что это скорей всего обвертка для DirectShow, но работает быстро. ДЛя прочтения рекомендую http://habrahabr.ru/blogs/development/111609/ |