Суббота
27-04-2024
17:17
Главная страница
Каталог статей
Информист Приветствую Вас Гость | RSS
Регистрация
Вход
Меню сайта

Категории каталога
Delphi [3]
C++ [5]
Java [28]
программирование на Java
Assembler [4]
Алгоритмы на ассме
C# [1]
Eclipse [1]

Наш опрос
Насколько вам понравился этот сайт
Всего ответов: 545

Копилка
Если вам понравился наш сайт или вы нашли полезную информацию, то у вас есть возможность отблагодарить администрацию.

Начало » Статьи » Programming » C++

OpenCV. Проблема "черного квадрата"

Если от веб-камеры приходят только черные кадры, но сама вебка работает отменно, то ставьте версию OpenCV 1.1, при этом не забудьте изменить все пути в проекте и дописать путь к директории bin OpenCV в системной переменной PATH, после чего перезапустите Visual Studio.

Вариант номер два: читаем мануал о том как пересобрать OpenCV. Из-за того, что библиотека была собрана неизвестно кем, как, где и т.д и т.п. она может не работать конкретно на вашем компьютере, для этого ее необходимо пересобрать. После сборки необходимо либо перезаписать lib- и dll-файлы либо прописать правильные пути в настройках проекта и системной переменной PATH.

Хочется добавить, что лично у меня заработала только пересобранная debug-версия. Кроме того, пересборка библиотеки позволит избежать вылета приложения при выполнении некоторых функций, например, функция может вылететь с ошибкой "Unhandled exception at 0xC0000005 Access violation reading location".

В первую очередь проблема "черного квадрата" вызвана изменениями в библиотеке videoInput, которая поставляется в комплекте с opencv. Версия 1991 работает нормально, 1995 - возвращает черный квадрат вместо кадра.

Вывод: скачайте videoInput версии 1991, замените файл videoInput.lib в openCV, пересоберите OpenCV

OpenCV версия 2.2

Разработчики с какой то радости решили отключить поддержку Direct Show, как мне показалось, дурацким способом: если уж решили убрать эту фичу следовало бы убрать весь соответствующий код, вместо этого в файле precomp.hpp просто убрали строку #define HAVE_VIDEOINPUT 1. Но на этом проблемы еще не заканчиваются.

VideoInput версия 1995

Особенностью этой версии является то что уменьшили код функции запуска вебкамеры и добавили небольшой кусочек кода для "ускорения захвата кадров", вот именно этот кусочек вызывает проблемы при работе со встроенной камерой

Выводы

  • Скачать исходники video input (1995)
  • Открыть файл videoInput.cpp
  • Удалить участок кода, начинающегося с коментария:
    //EXP - lets try setting the sync source to null - and make it run as fast as possible
  • Пересобрать video input
  • Скачать исходники openCV (2.2)
  • Открыть файл precomp.hpp
  • Добавить строку
    #define HAVE_VIDEOINPUT 1
    в пределах участка
    #if defined WIN32 || defined _WIN32
    например так:
    #if defined WIN32 || defined _WIN32
    #define HAVE_VIDEOINPUT 1
    #endif
    
  • Заменить файл videoInput.lib
  • Пересобрать openCV
Категория: C++ | Добавил: Judge (09-06-2011)
Просмотров: 3221 | Рейтинг: 5.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Поиск по каталогу
Яндекс


Поиск по Информисту

Наша кнопка


Друзья сайта

Статистика


Copyright MyCorp © 2006Сайт создан в системе uCoz