Próbuję skonfigurować OpenCV
do pracy z QT
w systemie Intel Core 2 Duo OSX 10.7.5/MacbookPro 2,5 Ghz. Widziałem tutaj kilka powiązanych pytań (How to link opencv in QtCreator and use Qt library i How do you set up OpenCV with QT in OSX?), ale nie ma zbyt wiele szczegółów. Na stronie QT oraz w moich przeszukiwaniach internetowych wszystkie informacje wydają się dotyczyć systemu Windows lub Linux.Konfigurowanie OpenCV w QT na OSX
Podałem listę ustawień i kod poniżej. Po uruchomieniu kodu otrzymuję komunikat o błędzie: :-1: error: symbol(s) not found for architecture x86_64
Czy to oznacza, że nie znajduje rzeczy, ponieważ ścieżki są złe lub dlatego, że mogłem zbudować openCV dla x86_32? Czy istnieje sposób sprawdzenia tego ostatniego? Nie jestem tak bystry z częściami procesu konfiguracji i konfiguracji.
Aktualizacja 2
Wyjście konsola jest poniżej - być może błąd jest oczywiste?
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'
Co mam tak daleko (TL; DR):
zbudowany i zainstalowany w najnowszej wersji (2.4.6) OpenCV ze źródeł i przetestowane z niektóre programy wiersza poleceń.
zainstalowaną najnowszą wersję QT (5.1) i jestem w stanie uruchomić wszystkie przykłady itp
określone ścieżki w pliku projektu (poniżej)
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
- próbował określić ścieżkę w ustawieniach projektu (poniżej). Dodałem
/usr/local/include
i/usr/local/lib
Prosty przykład kodu w 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;
}
Update 1
Inną rzeczą Próbowałem na podstawie samouczka było określenie bibliotek i n profilu QT (jak na zdjęciu poniżej). Samouczek dotyczył Windowsa i nie wiedziałem, czy i jak OSX jest inny. Gdzie w przykładzie Windowsa jest -1ibopencv_core246d
próbowałem go zi bez okresów separacji, ale bez "d". Oczywiście pełna nazwa lib to "libopencv_core.2.4.6.dylib" itd.
Tego rodzaju ważne szczegóły zawsze mnie podniecają, ale często zakłada się w tutorialach, że zna się na tym.
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
Domyślnie OpenCV 2.4.6 jest zbudowany dla rodzimej architektury (powinno to być x86_64). Kiedy mówisz "uruchom", w jaki sposób dokładnie uruchamiasz swój kod? Może to być związane z tym, że DYLD_LIBRARY__PATH nie zawiera ścieżki do plików .disc. – sansuiso
@sansuiso - Używam QTCreatora do zbudowania i uruchomienia tego. Dodałem aktualizację do mojego pytania, aby wyjaśnić, w jaki sposób próbowałem określić biblioteki, które należy uwzględnić. –
Kiedyś pracował dla mnie na 10.8 przy użyciu [tego pliku .pro] (https://gist.github.com/bestimmaa/7033447), ale od momentu skonfigurowania nowej maszyny dev z 10.9 pojawia się ten sam błąd. – Christoph