Опубликован: 02.09.2013 | Доступ: свободный | Студентов: 429 / 54 | Длительность: 19:27:00

Самостоятельная работа 1: Сборка и установка библиотеки OpenCV. Использование библиотеки в среде Microsoft Visual Studio

< Лекция 7 || Самостоятельная работа 1: 1234567891011 || Самостоятельная работа 2 >
3.3. Подключение заголовочных файлов в исходном коде приложения

Чтобы использовать функции библиотеки OpenCV при разработке собственных приложений, достаточно подключить заголовочный файл opencv.hpp, содержащий подключение большинства установленных модулей библиотеки, и пространство имен cv, в которое заключены все функции библиотеки.

#include <opencv2\opencv.hpp> 
using namespace cv; 

Если заранее известно, что в процессе разработки будет использован функционал конкретного набора модулей, то можно подключить только заголовочные файлы соответствующих модулей, например:

#include <opencv2\core.hpp> 
#include <opencv2\objdetect.hpp> 
 
using namespace cv; 
3.4. Компиляция и запуск программы. Возможные проблемы и пути их решения

Чтобы протестировать корректность настроек, подключите заголовочные файлы библиотеки OpenCV в файл main.cpp в соответствии с указаниями раздела 3.3 и скомпилируйте программу посредством нажатия клавиши F7, или используя пункт Build главного меню.

В процессе компиляции могут возникнуть следующие проблемы:

  1. Ошибка открытия заголовочного файла. Примерный текст ошибки приведен ниже. Суть проблемы состоит в том, что указаны неправильные пути до подключаемых заголовочных файлов библиотеки. Решение – проверить в настройках проекта корректность путей до заголовочных файлов (см. указания раздела 3.2).
    fatal error C1083: Cannot open include file:  
    'opencv2/opencv.hpp': No such file or directory 
    
  2. Ошибка линковки с модулем библиотеки OpenCV. Текст ошибки приведен ниже. Проблема состоит в том, что указаны неправильные пути до подключаемых lib-файлов. Решение – проверить в настройках проекта корректность путей до lib-файлов (см. раздел 3.2).
    LINK : fatal error LNK1104:  
    cannot open file 'opencv_core242d.lib' 
    
  3. Ошибки линковки, связанные с отсутствием реализации некоторых функций библиотеки OpenCV. Пример такой ошибки приведен далее. Проблема состоит в том, что не подключен модуль (lib-файл), содержащий реализацию указанной в тексте ошибки функции. Решение – добавить в список lib-файлов необходимый модуль (см. раздел 3.2).
    error LNK2019: unresolved external symbol  
    "void __cdecl cv::line(class cv::Mat &, 
    class cv::Point_<int>,class cv::Point_<int>, 
    class cv::Scalar_<double> const &,int,int,int)" 
    (?line@cv@@YAXAAVMat@1@V?$Point_@H@1@1ABV?$Scalar_@N@1@HHH@
    Z) referenced in function _main 
    

Когда программа скомпилировалась, запустите ее. Для этого можно нажать сочетание клавиш Ctrl+F5, либо воспользоваться пунктом Start Without Debugging главного меню. При попытке запуска может возникнуть ошибка, показанная на рисунке (рис.8.21).

Ошибка исполнения

Рис. 8.21. Ошибка исполнения

Проблема в том, что при исполнении выполняется поиск dll-файлов библиотеки OpenCV, и среда не находит указанные бинарные файлы. Существует два варианта решения данной проблемы:

  1. Задать в переменной окружения PATH пути до dll-файлов библиотеки OpenCV. В зависимости от способа установки библиотеки пути необходимо указать тот или иной путь (см. разделы 2.2 или 2.3).
  2. Скопировать указанный dll-файл к исполняемым файлам программы. Очевидно, что такой dll-файл будет не единственный, поэтому требуется последовательно копировать запрашиваемые файлы. Заметим, что если библиотека OpenCV собрана с поддержкой параллелизма, то также потребуется скопировать dll-файлы библиотеки Intel Threading Building Blocks (tbb_debug.dll, tbbmalloc_debug.dll или tbb.dll, tbbmalloc.dll), при условии, что TBB не установлена на рабочей машине, либо переменная окружения PATH не содержит путь до dll-файлов, входящих в ее состав.
< Лекция 7 || Самостоятельная работа 1: 1234567891011 || Самостоятельная работа 2 >
Андрей Терёхин
Андрей Терёхин

Нахожу в тесте вопросы, которые в принципе не освещаются в лекции. Нужно гуглить на других ресурсах, чтобы решить тест, или же он всё же должен испытывать знания, полученные в ходе лекции?

Демянчик Иван
Демянчик Иван

В главе 14 мы видим понятие фильтра, но не могу разобраться, чем он является в теории и практике.

" Искомый объект можно описать с помощью фильтра F= \lbrace f_{x',y'},x' \in \lbrace0, ...,w_f \rbrace , y' \in \lbrace 0,...,h_f \rbrace \rbrace "