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

Nuzhny

Пользователи
  • Количество публикаций

    1 427
  • Зарегистрирован

  • Посещение

  • Days Won

    176

Все публикации пользователя Nuzhny

  1. Отключить вывод ошибок

    Надо зайти в cxerror.h, переопределить макрос CV_ERROR. Вместо: #define CV_ERROR( Code, Msg ) \ { \ cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ ); \ EXIT; \ } Сделай: #define CV_ERROR( Code, Msg ) И перекомпилируй все dll из OpenCV.
  2. Работа с камерами

    OpenCV 1.0 не поддерживает работу с несколькими камерами - сами разработчики на конференции Graphicon 2007 об этом говорили. Попробуй более новую версию библиотеки, возможно, что всё изменилось к лучшему.
  3. Всё работает на MSVC 2005. Выкладывай своё изображение.
  4. Работа с камерами

    Вроде как OpenCV работает с камерой через DirectShow. Можно попробовать посмотреть изображение с камеры через graphedit и поиграть с настройками. Если получится получить нормальный видеопоток, то разбираться с OpenCV, иначе проблему следует искать в драйверах.
  5. GpuCV

    Именно этой не пробовал. Однако недавно перенёс на CUDA свой детектор движения. На разрешении 720х576 работать стал быстрей раза в 4. Причём больше половины времени занимает конвертация кадра из RGB в RGBX и копирование его в видеопамять. То есть сама обработка ускорилась в 8 раз. Пока меня это устраивает, но в будущем, возможно, попробую разобраться и с этим. Плюс ко всему можно распаковку видео также перенести на видеокарту (в SDK пример есть), тогда процессор освободится ещё больше, а также не придётся копировать распакованный кадр в видеопамять.
  6. Многопоточность и OpenCV

    Если процессор хотя бы двухъядерный, то можно сделать 2 потока. Вариант 1. Первый поток выполняет только захват видео и копирует каждый кадр во второй поток, в котором будет производиться обработка. Во втором потоке должна быть выделена память на два кадра: в один копируется кадр из первого потока, второй обрабатывается. После обработки, указатели на кадры меняются местами. Копирование кадра и смену указателей необходимо защитить критической секцией. Вариант 2. Сделать очередь, в которую первый поток будет складывать захваченные кадры. Второй поток, соответственно, будет из неё читать и обрабатывать. Если размер очереди будет превышать некоторые разумные пределы (скажем 150 кадров), то выбрасывать кадры из очереди, но не подряд, а равномерно. Таким образом, пропадание кадров не приведёт к "дёрганию" картинки. Вариант 1 проще, его в принципе должно хватить. Вариант 2 применяется чаще всего при захвате видео из сети с низкой пропускной способностью, чтобы уменьшить эффект её латентности.
  7. Многопоточность и OpenCV

    У меня вывод с веб-камеры не замедленный - как раз такой как и в експлорере. Может у тебя процессор слабый или камера больше не позволяет, например из-за большого разрешения.
  8. Работа с контурами

    Ну, лица ищутся bosting'ом. Пример работает так себе.
  9. Детектирование объектов

    Самое простое - набрать в гугле plate recognition. Или походить по ссылкам в Википедии. Ну так выкладывай свои алгоритмы, поможем реализовать.
  10. MS Visual C++ и OpenCV

    По идее можно, я не пробовал. Просто большинство программ таскают сам vcredist_x86.exe и предлагают его установить при инсталляции. У меня такие проблемы не стоят.
  11. MS Visual C++ и OpenCV

    Лицензия свободная, тут засад нет.
  12. MS Visual C++ и OpenCV

    OpenCV dll'ки нуждаются в C++ библиотеках. Обычно с такой программой распространяют vcredist_x86.exe. Обычно устанавливается со студией.
  13. Работа с камерами

    Скорее всего так и есть, а может у меня дома интернет-канал слишком узкий. На работе запустил из командной строки ffplay.exe "http://webcam.oii.ox.ac.uk/mjpg/video.mjpg" - показывает. ffplay.exe скачал с того же сайта, той же версии, которую подключал к OpenCV. Все исходники остались дома - попробовать на работе свой вариант смогу только в понедельник.
  14. Работа с камерами

    1. Скачал ffmpeg. 2. Поправил в ffopencv.cpp подключаемые либы на те, которые есть в скачанной ffmpeg. 3. В cvcap_ffmpeg.cpp исправил название функции с cvCreateFileCapture_FFMPEG на cvCaptureFromFile_FFMPEG. 4. В свойствах проекта ffopencv -> C|C++ -> Preprocessor -> Preprocessor Definitions добавил HAVE_FFMPEG и HAVE_FFMPEG_SWSCALE 5. Скомпилировал ffopencv 6. Перекомпилировал проект highgui 7. В своём проекте добавил инклуды ffopencv.h и _highgui.h, а также ffopencv.lib 8. Вызываю CvCapture *capture = cvCaptureFromFile_FFMPEG("c:\\video\\The Big Bang Theory (Season 3)\\the.big.bang.theory.s03e06.720p.hdtv.x264-ctu.mkv"); - проигрывается! 9. Все твои url с камерой нет. Вот.
  15. Работа с камерами

    Угу. В папке otherlibs есть проект ffopencv, который и выдаёт необходимую ffopencv110.dll, в которой и есть интересующая функция cvCaptureFromFile_FFMPEG. Только для успешной компиляции надо скачать исходники ffmpeg, скомпилировать и получить либы: libavformat.a, libavcodec.a, libavutil.a, libgcc.a, libmingwex.a. Это линуксовые аналоги lib-файлов. Однако макросы _MSC_VER в ffopencv.cpp дают надежду на компиляцию под Виндой. Мне, если честно, неохота возиться с этим делом. Если будешь пробовать - расскажи о результатах.
  16. Работа с камерами

    О, до ошибки линкера ты уже дошёл! В OpenCV 2.0 уже есть libopencv_ffmpeg200.dll.
  17. Работа с камерами

    В OpenCV 1.1 есть cvCreateFileCapture_FFMPEG в _highgui.h, но он там закомментирован. Надо раскомментировать, перекомпилилировать highgui.dll. Посмотреть на ошибки линкера и попробовать с ними разобраться. У меня пока нет времени на это, может быть вечером.
  18. MS Visual C++ и OpenCV

    Наверняка можно и другой студией откомпилировать. У меня ещё стоит бета2 2010-й, могу попробовать. Но лучше тебе самому изучить тонкости компилирования и линковки (если, конечно, ты будешь работать С++ программистом). P.S. Посмотрел внимательней, у тебя ещё и cv.lib с cv110.dll лишние.
  19. MS Visual C++ и OpenCV

    Да, из них надо подключить только 3: cv.lib, cxcore.lib, highgui.lib. И, соответственно, брать с собой 3 dll: cv110.dll, cxcore110.dll, highgui110.dll. Твой код скомпилировал, вот здесь. В папке release лежит готовый exe и необходимые к нему 3 dll.
  20. MS Visual C++ и OpenCV

    Здесь
  21. MS Visual C++ и OpenCV

    2005-ю студию использую. И ошибки какие-то странные у тебя. Если хочешь могу скинуть скомпилированные lib и dll, которые не тербую ничего лишнего.
  22. MS Visual C++ и OpenCV

    Всё нормально. Посмотри в свойствах проекта, свойства linker'а, раздел Input. Если найдёшь там где-нибудь LIBCMT, то удали.
  23. MS Visual C++ и OpenCV

    Нет, ничего подключать не нужно. Наоборот, все необходимые dll прилинкованы в виде статических библиотек (lib-файлов). Если бы ты назвал имя ошибки(ок), было бы проще тебе ответить. Unresolved external? Или, наоборот, always defined? В первом случае, надо добавить необходимые lib, во втором посмотреть в свойства линкера, вдруг в ignored input library указаны необходимые тебе библиотеки. Вообще, сборка больших С++ проектов довольно сложная задача из-за своей громоздкости (есть даже специальность - инженер по сборкам). Но процесс логичен и детерменирован, разрулить можно всегда. Ошибки в студию!
  24. Многопоточность и OpenCV

    Есть один рабочий, но немного извращенческий способ решения проблемы. Допустим, у тебя есть dll, которая не предназначена для многопоточного использования. 1. Поставляешь с программой эту xxx.dll. 2. Для каждого своего i-го потока создаёшь физическую копию этой длл: xxx_i.dll. Подключаешь её в этом потоке динамически (LoadLibrary и т.д), статическая линковка не подходит. 3. Поток завершается, делается FreeLibrrary и xxx_i.dll удаляется с диска. По большому счёту ничего сложного, если нет желания править исходники библиотеки (или они могут быть недоступны), то такой подход вполне оправдан.
  25. MS Visual C++ и OpenCV

    У меня в папке с OpenCV есть _make. Там лежит файл opencv.vs2005.sln, который открываем 2005-й студией (или более поздней версией). В свойствах каждого проекта, которые отображаются в окне Solution Explorer'a выставляется "Multi threaded". Делается полная перекомпиляция "Rebuild solution". Из папки bin забираются необходимые dll.
×