2013-03-13 18 views
8

Ho un progetto opencv che ho sviluppato sotto ubuntu 12.04, su un VM parellels su un mac che ha un'architettura x86_64. Ci sono stati molti problemi di prestazioni di commutazione dello schermo che credo siano dovuti alla VM, in cui le modalità video di Linux girano intorno per un paio di secondi mentre l'accesso alla telecamera è fatto dall'applicazione opencv. Ho deciso di spostare il progetto in Xcode sul lato mac del computer per continuare lo sviluppo di opencv. Tuttavia, non sono così familiare con xcode e sto avendo problemi a far funzionare correttamente il progetto lì.compiling opencv 2.4 su un mac 64 bit in Xcode

Ho installato xcode. Ho scaricato e decompresso l'ultima versione di opencv su mac, e ho eseguito: ~/src/opencv/build/cmake-gui -G Xcode .. secondo le istruzioni di willowgarage e varie altre posizioni. Questo sembra funzionare bene (comunque mi chiedo ora se mi manca un'impostazione di architettura qui, anche se è intel a 64 bit in Xcode). Poi ho impostato un progetto xcode con i file sorgente dal progetto linux e ho cambiato le directory di inclusione per usare/opt/local/include/... piuttosto che/usr/local/include/... Ho cambiato xcode in utilizzare il compilatore GV LLVM nelle impostazioni di compilazione per il progetto quindi impostare la finestra di dialogo Apple LLVM per C++ in dialetto di lingua su GNU ++ 11 (che sembra possibilmente incoerente con la riga precedente)

Non sto utilizzando un makefile in Xcode, (che io sappia - ha un proprio file di progetto ...)

sono stato anche in esecuzione in un problema di linker che sembrava che possono essere risolti con l'aggiunta di questo flag del linker:

-lopencv_video 

basato su un messaggio simile qui: other thread tuttavia in quel caso la persona stava usando un Makefile nel loro progetto.

Ho provato ad aggiungere questo flag linker sotto "Altri linker flag" nelle impostazioni di generazione xcode, ma ottengo ancora errori di compilazione.
Penso che potrei avere due problemi qui, uno con le impostazioni dell'architettura quando si costruiscono le librerie opencv con Cmake e uno con le impostazioni del linker nel mio progetto.

Attualmente la lista errore di generazione si presenta così:

Undefined symbols for architecture x86_64: 
    "cv::_InputArray::_InputArray(cv::Mat const&)", referenced from: 
    _main in main.o 
    "cv::_OutputArray::_OutputArray(cv::Mat&)", referenced from: 
    _main in main.o 
    "cv::Mat::deallocate()", referenced from: 
    cv::Mat::release() in main.o 
    "cv::Mat::copySize(cv::Mat const&)", referenced from: 
    cv::Mat::Mat(cv::Mat const&)in main.o 
    cv::Mat::operator=(cv::Mat const&)in main.o 
    "cv::Mat::Mat(_IplImage const*, bool)", referenced from: 
    _main in main.o 
    "cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from: 
    _main in main.o 
    ---SNIP--- 
    ld: symbol(s) not found for architecture x86_64 
    collect2: ld returned 1 exit status 

Qualcuno può fornire alcune indicazioni su cosa provare dopo?

Grazie, Walt

risposta

15

passi per compilare ed eseguire C++ OpenCV 2.4.4 su Mac OS X Lion 10.7.5 con CMake 2.8.10 e Xcode 4.6.1 EDIT: testato con successo con OpenCV 2.4.5 su Mac OS x mountain Lion 10.8.3 e Xcode 4.5

Avere gli strumenti giusti

  1. scaricare OpenCV-unix da http://sourceforge.net/projects/opencvlibrary/files/ ed estrarre ovunque
  2. scaricare cmake .dmg da http://www.cmake.org/cmake/resources/software.html e installarlo
  3. Io parto dal presupposto di avere Xcode 4.6 su OS X Lion, che comprende le SDK per iOS 6.1
  4. andare alle preferenze Xcode per scaricare e installare gli strumenti di riga di comando in modo da avere g ++ eccetera.

Usa CMake per compilare OpenCV

  1. accedere alla cartella OpenCV estratta
  2. creare una directory di compilazione

    mkdir build 
    cd build 
    cmake -D WITH_TBB=OFF -D BUILD_NEW_PYTHON_SUPPORT=OFF -D BUILD_FAT_JAVA_LIB=OFF -D BUILD_TBB=OFF -D BUILD_EXAMPLES=ON -D CMAKE_CXX_COMPILER=g++ CMAKE_CC_COMPILER=gcc -D CMAKE_OSX_ARCHITECTURES=x86_64 -D BUILD_opencv_java=OFF -G "Unix Makefiles" .. 
    make -j8 
    sudo make install 
    
  3. dalla cartella di compilazione, andare a bin/ed esegui uno dei test

    ./opencv-test-photo 
    

Crea il tuo progetto di C++ OpenCV Xcode

  1. al fuoco fino Xcode e creare un nuovo progetto Xcode
  2. selezionare Command Line Tool per il tipo di progetto sotto OS X
  3. apri le impostazioni di costruzione del tuo progetto
  4. in Architetture, imposta Architecture su Intel a 64 bit. impostare anche Architetture validi per x86_64
  5. sotto Build Options, impostare compilatore per C/C++ per predefinito Compiler
  6. sotto percorsi di ricerca, impostare intestazione dei percorsi di ricerca di/usr/local/include
  7. anche sotto percorsi di ricerca, impostare Biblioteca Percorsi di ricerca su/usr/local/lib
  8. sotto il compilatore Apple LLVM 4.2 - Set di lingue Libreria standard C++ su libstd ++ (con OpenCV 2.4.6, Xcode 5, LLVM 5.0 e 10.8.5, impostare sia la lingua che la libreria std a "Default del compilatore" invece)

Aggiungere il compilato le librerie OpenCV al progetto

  1. andare il tab fasi di creazione successiva costruire scheda Impostazioni eri in
  2. all'interno di collegamento binari con le librerie, fare clic sul segno + e scegliere Aggiungi Altro
  3. ha colpito la parte anteriore slash/sulla tastiera e digitare/usr/local/lib
  4. premere invio e selezionare le librerie che si desidera utilizzare nel progetto
  5. assicuratevi sempre di selezionare libopencv_core.2.4.4.dylib
  6. hit it ter e vedrete i dylibs selezionati nell'ambito del progetto

scrivere del codice

  1. prima consente di organizzare i file, fare clic destro sull'icona progetto progetto e selezionare Nuovo gruppo
  2. nome nuovo gruppo opencv o altro
  3. trascinare i dylibs e rilasciarli in quel gruppo
  4. open main.cpp
  5. codice
  6. copia da uno qualsiasi dei test di esempio che è venuto con OpenCV e incollarlo qui
  7. assicurarsi vengono aggiunti tutti i dylibs necessarie, ad esempio, se è stato copiato il codice opencv_test_stitching.cpp in main.cpp, è sarà necessario aggiungere le seguenti librerie nelle fasi precedenti

    • libopencv_core.2.4.4.dylib
    • libopencv_highgui.2.4.4.dylib
    • libopencv_stitching.2.4.4.dylib

Cheers.

+0

Grazie mille ... questo ha risolto il mio problema ... il problema era con "C++ Std Library". Di default era "libC++". Cambiarlo in "libstdC++" ha funzionato. Grazie mille ancora una volta – tez

+0

Un ottimo tutorial mi ha portato oltre la maggior parte degli altri. Qualche modifica è cambiata con xcode 5 e OpenCV 2.4.6.1? Ottengo alcuni errori durante l'installazione di make sudo ma cercherò di rintracciarli da soli. Grazie! –

+0

In base a questo commento (http://stackoverflow.com/questions/14030546/linker-errors-after-upgrading-xcode-to-4-5-2-and-opencv-to-2-4-3/15662948# comment28843244_15662948), sì, ci sono cambiamenti. "Con OpenCV 2.4.6, Xcode 5, LLVM 5.0 e 10.8.5, dovevo impostare sia il dialetto che la libreria std (passo 8) su" Compilatore predefinito ", altrimenti vedrei errori di linker (mi sono lamentato di imwrite in particolare) o mancante . " Ho aggiornato la risposta. Spero che funzioni per te. – moubarak

Problemi correlati