Configurando o OpenCV no QT no OSX
Estou tentando configurarOpenCV
trabalhar comQT
no OSX 10.7.5 / MacbookPro 2.5 Ghz Intel Core 2 Duo. Eu vi algumas questões relacionadas aqui (Como vincular o opencv no QtCreator e usar a biblioteca do Qt eComo você configura o OpenCV com o QT no OSX?) mas não há muitos detalhes. No site QT e em minhas pesquisas na web, todas as informações parecem ser sobre o Windows ou o Linux.
Eu listei o que minha configuração e código está abaixo. Quando executo o código, estou recebendo um erro::-1: error: symbol(s) not found for architecture x86_64
Isso significa que não está encontrando coisas porque os caminhos estão errados ou porque eu posso ter construído openCV para x86_32? Existe uma maneira de verificar o último? Eu não sou tão experiente com partes do processo de configuração e configuração.
Atualização 2
A saída do console está abaixo - talvez o erro seja óbvio?
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'
O que eu tenho até agora(o tl; dr):
construiu e instalou a versão mais recente do openCV (2.4.6) a partir da fonte e testou-a com alguns programas de linha de comando.
instalei a versão mais recente do QT (5.1) e sou capaz de executar todos os exemplos, etc.
especificou os caminhos no arquivo de projeto (abaixo)
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
tentou especificar o caminho nas configurações do projeto (abaixo). Eu adicionei/usr/local/include
e/usr/local/lib
O código de exemplo simples em 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;
}
Atualização 1
Outra coisa que eu tentei com base em um tutorial foi especificar as libs no perfil QT (como na imagem abaixo). O tutorial foi para o Windows e eu não sabia se ou como o OSX é diferente. Onde no exemplo do Windows é-1ibopencv_core246d
Eu tentei com e sem os períodos de separação, mas sem o "d". Claro que o nome completo de uma lib é "libopencv_core.2.4.6.dylib" etc.
Esses detalhes importantes sempre me atrapalham, mas geralmente é assumido em tutoriais que alguém sabe disso.
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