Настройка OpenCV в QT на OSX
Я пытаюсь настроитьOpenCV
работать сQT
на OSX 10.7.5 / MacbookPro 2,5 ГГц Intel Core 2 Duo. Я видел несколько связанных вопросов здесь (Как связать opencv в QtCreator и использовать библиотеку Qt а такжеКак вы настраиваете OpenCV с QT в OSX?) но там не так много деталей. На сайте QT и в моих поисках в Интернете вся информация, похоже, относится к Windows или Linux.
Я перечислил мои настройки и код ниже. Когда я запускаю код, я получаю сообщение об ошибке::-1: error: symbol(s) not found for architecture x86_64
Означает ли это, что он ничего не находит, потому что пути неправильные или потому что я, возможно, построил openCV для x86_32? Есть ли способ проверить последнее? Я не очень разбираюсь в части процесса настройки и настройки.
Обновление 2
Вывод консоли ниже - возможно, ошибка очевидна?
02:44:38: Running steps for project RP_openCV_01...
02:44:38: Configuration unchanged, skipping qmake step.
02:44:38: Starting: "/usr/bin/make"
clang++ -headerpad_max_install_names -mmacosx-version-min=10.6 -o RP_openCV_01 main.o -L/usr/local/lib -1ibopencv_core.2.4.6,dylib -1ibopencv_imgproc.2.4.6.dylib -F/Users/rise/Qt5.0.2/5.0.2/clang_64/lib -framework QtCore
clang: warning: argument unused during compilation: '-1ibopencv_core.2.4.6,dylib'
clang: warning: argument unused during compilation: '-1ibopencv_imgproc.2.4.6.dylib'
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in main.o
"cv::namedWindow(std::string const&, int)", referenced from:
_main in main.o
"cv::Mat::deallocate()", referenced from:
_main in main.o
"cv::imread(std::string const&, int)", referenced from:
_main in main.o
"cv::imshow(std::string const&, cv::_InputArray const&)", referenced from:
_main in main.o
"cv::waitKey(int)", referenced from:
_main in main.o
"cv::fastFree(void*)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [RP_openCV_01] Error 1
02:44:38: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project RP_openCV_01 (kit: Desktop Qt 5.0.2 clang 64bit)
When executing step 'Make'
Что у меня пока(тл; др):
собрал и установил последнюю версию openCV (2.4.6) из исходного кода и протестировал ее с некоторыми программами командной строки.
установил последнюю версию QT (5.1) и смог запустить все примеры и т. д.
указали пути в файле проекта (ниже)
QT += core
QT -= gui
TARGET = RP_openCV_01
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += /usr/local/include\
LIBS += -L/usr/local/lib
попытался указать путь в настройках проекта (ниже). я добавил/usr/local/include
а также/usr/local/lib
Простой пример кода в main.cpp
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
int main() {
// read an image
cv::Mat image= cv::imread("dog.jpg");
// create image window named "My Image"
cv::namedWindow("My Image");
// show the image on window
cv::imshow("My Image", image);
// wait key for 5000 ms
cv::waitKey(5000);
return 1;
}
Обновление 1
Еще одна вещь, которую я попробовал на основе учебника, состояла в том, чтобы указать libs в профиле QT (как на рисунке ниже). Учебник был для Windows, хотя я не знал, отличается ли OSX от других. Где в примере с Windows это-1ibopencv_core246d
Я попробовал это с и без разделяющих периодов, но без "d". Конечно, полное имя библиотеки - «libopencv_core.2.4.6.dylib» и т. Д.
Такого рода важные детали всегда меня сбивают с толку, но в уроках часто предполагается, что этот материал известен.
LIBS += -L/usr/local/lib \
-1ibopencv_core.2.4.6 \
-1ibopencv_imgproc.2.4.6 \
-1ibopencv_features2d.2.4.6 \
-1ibopencv_highgui.2.4.6