Установка OpenCV на OSX 10.6 с использованием MacPorts - PullRequest
3 голосов
/ 14 сентября 2010

Я попытался установить OpenCV, следуя инструкциям по установке MacPorts на http://opencv.willowgarage.com/wiki/Mac_OS_X_OpenCV_Port,, набрав

sudo port install opencv

в терминале.

Установка / компиляция прошла нормально,и файлы находятся в / opt / local подкаталогах, как и должно быть.В качестве первого теста я попытался включить highgui.h в исходный файл C ++:

#include <highgui.h>

, но при компиляции с g ++ или gcc я получаю error: highgui.h: No such file or directory.Я новичок в разработке на Mac, так что, может быть, я что-то упустил?Я подумал, что мне может потребоваться установить некоторую переменную пути, и после прочтения некоторых сообщений, которые я нашел при поиске в Google, я попытался установить DYLD_LIBRARY_PATH = / opt / local / lib, но это было диким предположением, и, похоже, это не помогло.Что я должен сделать, чтобы компиляторы нашли библиотеку?

Спасибо!

Ответы [ 4 ]

3 голосов
/ 09 февраля 2011

Я не мог заставить его работать некоторое время, пока не обнаружил, что есть набор pkg-config.

Все, что вам нужно сделать для компиляции без проблем, это:

g++ `pkg-config --libs --cflags opencv` -o helloWorld  helloWorld.cpp 

или gcc, если вы работаете с C вместо C ++.

Надеюсь, это поможет!

2 голосов
/ 14 сентября 2010

MacPorts устанавливает заголовки C / C ++ в каталог / opt / local / include, который не является системным по умолчанию. Это означает, что вы должны явно указать GCC, где искать заголовки, которые вы используете. Вы можете сделать это, указав параметры командной строки "-isystem" или "-I":

-системный каталог Поиск в каталоге для заголовочных файлов после всех указанных каталогов по-я, но до стандартной системы каталоги. Пометить это как систему каталог, так что он получает ту же специальную обработку, что и применяется к стандартной системе каталоги. Если dir начинается с "=", затем символ «=» будет заменен префиксом sysroot; увидеть --sysroot и -isysroot.


-Idir Добавьте каталог dir в начало списка каталогов в искать заголовочные файлы. это может использоваться для переопределения системы заголовочный файл, заменяющий вашу собственную версию, так как эти каталоги ищутся до системные каталоги заголовочных файлов. Тем не мение, Вы не должны использовать эту опцию для добавления каталогов, которые содержат предоставленные поставщиком системные заголовочные файлы (используйте -isystem для этого). если ты использовать более одной опции -I, каталоги сканируются в порядок слева направо; стандарт системные каталоги идут после.

Если стандартная система включает каталог или каталог указывается с -isystem, также указывается с -I, опция -I будет быть игнорируются. Каталог будет по-прежнему искать, но как система каталог в его нормальном положении в Система включает в себя цепочку. Это чтобы убедиться, что процедура GCC для исправления ошибок системы заголовков и порядок для include_next Директива не случайно изменилось. Если вам действительно нужно изменить порядок поиска для системные каталоги, используйте -nostdinc и / или опции -isystem.

Я рекомендую использовать -isystem, потому что она отключает некоторые предупреждения, которые вы не можете исправить без изменения кода. Например, используя std :: auto_ptr, если вы компилируете свой код с -std = c ++ 0x и так далее.

То же самое относится и к библиотекам. Вы должны указать GCC, где их найти, используя опцию -L.

1 голос
/ 20 февраля 2011

Ссылка на вики-страницу OpenCV: http://opencv.willowgarage.com/wiki/CompileOpenCVUsingMacOSX

Установите переменные среды следующим образом:

export PKG_CONFIG_PATH=/opt/local/lib/pkgconfig
export LD_LIBRARY_PATH=/opt/local/lib

и скомпилируйте код opencv следующим образом:

g++ -bind_at_load `pkg-config --cflags opencv` morphology.c -o morphology `pkg-config --libs opencv`

а затем запустите код следующим образом:

./morphology
0 голосов
/ 02 ноября 2012

Установка Macports работала у меня без проблем, стоит установить tbb перед установкой opencv, большое ускорение (и, к сожалению, не получится наоборот).

#include <highgui.h> - это не c ++заголовок.

Используйте #include<opencv2/highgui/highgui.hpp> и его друзей в /opt/local/include и избегайте всего в /opt/local/include/opencv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...