2013-04-24 6 views
6

Ho scaricato i sorgenti di opencv-2.4.5 e ho seguito il tutorial (sul sito di opencv per Windows) sull'installazione di tutte le mie librerie. Ok. Ho creato il file opencv.sln con cmake, quindi l'ho aperto con Visual Studio 2010 Professional e ho fatto clic sulla soluzione di build ma solo 9 sono riusciti. La maggior parte dei 200 ha avuto esito negativo e la maggior parte degli errori relativi a tbbd.lib non è stata trovata e opencv_core245d.lib non è stato trovato con l'errore LNK1104. Sto cercando di risolverlo per quanti giorni. Ho provato a mostrare i modi di file ... Chiunque può aiutare per favore? Questa è la mia tesi. (Build senza supporto Common Language)OpenCV 245 primi errori di costruzione

+0

suona come nella configurazione cmake lo hai creato con il supporto per la libreria tbb (tbb -> Threading Building Blocks) ma non riesci a trovarlo (o non hai esso, o il percorso è sbagliato). Supponendo che tu abbia configurato la tua build cmake tramite la GUI cmake, prova a deselezionare l'opzione tbb e rigenerare il tuo file .sln – alrikai

+0

grazie @alrikai ma ho aggiunto il tbb in opencv-2.4.5/dep/tbb .... e ho l'ho mostrato in cmake come gli altri esempi openexr, eigen, qt, cuda, openni con sensore principale, python con numpy e sfinge, clAmdBlas e Fft ... e ho usato la cmake GUI per fare ciò. E aggiungi il percorso del cestino di Tbb con l'editor di percorsi –

+0

Il percorso del tuo file .bbb è corretto? – alrikai

risposta

6

risposta rapida

sono riuscito a compilare OpenCV con il supporto TBB utilizzando il tutorial here.

Spec: Visual Studio 2012/Win 7 (64 bit)/OpenCV 2.4.5/CUDA 5

ho scaricato l'ultima TBB zip ed estratto a C:/src/OpenCV/dep (come suggerito nel tutorial linkato sopra).

è necessario utilizzare le seguenti impostazioni TBB a CMake (ADAPT a seconda delle vostre percorsi di file):

TBB_LIB_DIR  :: C:/src/OpenCV/dep/tbb41_20130314oss/lib/intel64/vc11 
TBB_INCLUDE_DIRS :: C:/src/OpenCV/dep/tbb41_20130314oss/include/ 
TBB_STDDEF_PATH :: C:/src/OpenCV/dep/tbb41_20130314oss/include/tbb/tbb_stddef.h 
WITH_TBB   :: checked 
BUILD_TBB   :: unchecked 

Ulteriori informazioni

Inizialmente, ho anche voluto installare OpenCV con CUDA 5 supporto , ma sembra che CUDA 5 sia incompatibile con VS2012. Questo è l'errore ho ottenuto durante la compilazione OpenCV:

Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_matrix_operations.cu.obj 
nvcc : fatal error : nvcc cannot find a supported cl version. Only MSVC 9.0 and MSVC 10.0 are supported 

La buona notizia è che si sta utilizzando VS2010, che può essere utilizzato con CUDA, come suggerito here. VS2012 può essere impostato per creare progetti con CUDA, ma attualmente non esiste alcun modo (AFAIK) per compilare OpenCV con il supporto CUDA per VS2012 (leggi this per maggiori informazioni).

In conclusione, le persone che hanno bisogno del supporto CUDA devono compilare e utilizzare OpenCV con VS2010.

Inoltre, durante la compilazione OpenCV, ho ottenuto i seguenti errori:

error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm118' or greater 
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit 

ho usato le istruzioni per compilare here finalmente OpenCV. Ho creato una finestra delle proprietà che aveva /Zm130 come opzione aggiuntiva in Proprietà comuni> C/C++> Riga di comando e l'ho aggiunta a a tutti i progetti OpenCV generati.

Per riferimento, Allego inoltre la configurazione CMake e CMakeCache.txt lima che ho usato (CUDA è disabilitato come sto usando VS2012): configurazione

Spero che questo aiuti e per favore commentare se hai bisogno che sviluppi qualsiasi passaggio.

+0

Ho intenzione di provarlo @dilgenter e lo posterò qui grazie –

+0

Ho installato di nuovo opencv-master, opencv-2.4.5 e opencv-2.4.7 entrambi sul mio nuovo laptop. La funzione imread di OpenCV-2.4.7 è sempre risultata nulla ma C-cvImageLoad ha funzionato bene e cvLoadImage di opencv-master non ha funzionato cvImageLoad o mi sono perso qualcosa. Ma la dir di TBB deve essere .../bin/ia32 non intel64 il mio sistema operativo è a 64 bit ma VS201x a 32 bit questo era il mio errore. E ho degli errori di cucitura e di gpu e lo studio visivo sta raccontando l'errore che puoi piacere al tuo @dilgenter e ora sta funzionando bene, ma solo il 2.4.5 cercherò di capire perché il file 2.4.7 imread restituisce null Mat elemento . Bun ora sono troppo occupato –

7

Collapse

ho trascorso ben 15 ore o giù di lì per ottenere il lavoro finito utilizzando OpenCV. 14,5 di quelle ore sono state spese solo per averlo configurato correttamente. Ho eseguito circa 7 video tutorial, diverse guide di impostazione e ho letto centinaia di post contenenti risoluzioni per gli stessi errori che stavo facendo. So che installare OpenCV non è un compito banale e ci sono diversi passaggi per farlo. Quindi ecco un semplice tutorial per configurarlo se vuoi usare openCV.

È importante capire come funzionano le cose per quanto riguarda il collegamento. Esistono tre tipi di file, le intestazioni che si includono, i file .dll che contengono le funzioni e le librerie che contengono istruzioni su come chiamare le funzioni nei file .dlls. Quindi qui, invece di aggiungere solo i file .dll come dipendenze nel linker di input, aggiungeremo i file lib. Creeremo quindi una variabile di Ambiente di sistema che dirà alla macchina dove cercare i file .dll quando i loro file di libreria corrispondenti sono referenziati. Creeremo una finestra delle proprietà in modo che quando creiamo un nuovo progetto, possiamo semplicemente aggiungere le impostazioni al nostro progetto facendo clic su "Aggiungi scheda delle proprietà esistenti" invece di aggiungerne una nuova. In questo modo, non dovremo mai più ripetere questo.

attenersi alla seguente procedura ESATTAMENTE e assicurarsi VISUAL STUDIO è chiuso PRIMA DI CONTINUARE

NOTA: Quando il testo è dato tra virgolette con le istruzioni per copiare il testo detto, non includere le virgolette.

  • Prima di tutto, la parte facile - scarica OpenCV 2.4.5 dal loro sito web. http://opencv.org/ e fare clic su OpenCV per Windows. Scaricherà OpenCV 2.4.5.exe.

Installare OpenCV

  • Al termine del download, fare doppio clic OpenCV-2.4.5.exe per eseguirlo.

  • Quando è stato chiesto dove estrarre i file, il tipo ino la casella di testo: "C: \"

  • C: \ OpenCV dovrebbe essere stato creato dopo il completamento. Naviga lì per essere sicuro.

Variabili d'ambiente Setup

  • Utenti di Windows 8.

    - Right click the bottom left corner of your screen when the start icon pops up. 
    
    - Click "Command Prompt (Admin)" 
    
    - Type "SETX -m OPENCV_DIR C:\opencv\build" and press enter to set the opencv build directory as a System Environment Variable. Wait for the console to give you confirmation that it is set. 
    
    - Right click the bottom left corner of your screen when the "Start" icon pops up. Click System -> Advanced System Settings -> Environment Variables 
    
    - In the "System Variables" list box, under the "Variable" collumn, find "Path". 
    
    - Highlight the "Path" row and click edit. 
    
    - Click in the "Variable Value" text box and hit the "end" key on your keyboard to scroll to the end of the line and add a semicolon. 
    
    - Type the following: "C:\opencv\build\x86\vc10\bin;C:\opencv\build\x86\vc10" and click "OK". This will add the openCV bin directory to the system path. 
    
  • utenti di Windows 7:

    seguire la stessa procedura. L'unica differenza è come si arriva al prompt dei comandi e alle impostazioni di sistema. Google come impostare una variabile di ambiente su Windows 7 se necessario.

Setup Visial Studio

NOTA: mi raccomando VS2012 professionale a causa della avanzata evidenziazione della sintassi che rende la vita molto più facile quando la programmazione C++. Questa versione può essere scaricata e installata gratuitamente da DreamSpark. Basta creare e rendere conto del tuo ID studente. Tuttavia, i passaggi per VS2010 e VS2012 sono gli stessi.

  • Aprire Visual Studio

    • Fare clic su "New Project" e sotto "C++" selezionare "applicazione console Win32".
  • Quando si apre la finestra, fare clic su "Avanti", selezionare "Progetto vuoto" e fare clic su "Fine". È molto importante iniziare con un PROGETTO VUOTO senza un'intestazione precompilata.

  • Individuare il "Gestore proprietà". Di default, dovrebbe essere una scheda a volte difficile da perdere. In alternativa è possibile accedervi facendo clic sulla barra degli strumenti "Visualizza" -> "Gestione proprietà".

  • Fare clic con il pulsante destro del mouse su "Debug | Win32" e selezionare "Aggiungi nuovo foglio delle proprietà del progetto". Chiamarlo "OpenCVProps" e fare clic su "Aggiungi".

  • Fare clic con il pulsante destro del mouse sulla nuova scheda delle proprietà e selezionare "Proprietà".

  • Dalla colonna di sinistra, passare a "C/C++" -> "Generale" e nella casella di riepilogo a destra, selezionare "Altre directory di inclusione" e fare clic su "Modifica".

  • Aggiungere le seguenti tre cartelle:

    • "$ (OPENCV_DIR) \ include"

    • "$ (OPENCV_DIR) \ include \ OpenCV"

    • "$ (OPENCV_DIR) \ include \ opencv2 "

  • Dal le ft column, vai su "Linker" -> "General" e nella casella di riepilogo a destra, seleziona "Additional Library Directories" e fai clic su "Edit".

  • Aggiungere il seguente elenco:

    • "$ (OPENCV_DIR) \ x86 \ VC10 \ lib"
  • Dalla colonna di sinistra, andare a "Linker" -> "Input" e nella casella di riepilogo sulla destra, selezionare "Dependenies aggiuntivi" e fare clic su "Modifica".

  • Aggiungere i seguenti file .lib alle dipendenze. È possibile farlo copiando e incollando questi in quella casella di modifica. Non ho incluso intenzionalmente un punto di vista per semplificare la copia di incolla di questi.

    opencv_core245d.lib opencv_imgproc245d.lib opencv_highgui245d.lib opencv_ml245d.lib opencv_video245d.lib opencv_features2d245d.lib opencv_calib3d245d.lib opencv_objdetect245d.lib opencv_contrib245d.lib opencv_legacy245d.lib opencv_flann245d.lib

NOTA: se si sta creando per il rilascio, questi passaggi sono gli stessi. Tuttavia, quando copia e incolla questi file, rimuovi la "d" dalla fine di ognuno di essi. La "d" indica che si tratta di una libreria di rilascio e di collegamenti a una versione .dll.

  • Congratulazioni! La parte difficile è quasi finita! Fai clic su "OK" per chiudere la finestra.

creare e costruire un capo progetto di test

  • al nostro Solution Explorer. Questo può essere focalizzato dalla barra degli strumenti tramite "Visualizza" -> "Solution Explorer"

  • Fare clic con il pulsante destro del mouse su "File di origine" e selezionare "Aggiungi" -> "Nuovo elemento".

  • Selezionare "File C++ (.cpp)" e denominare il file "main.cpp". Clicca "Aggiungi".

  • Copia e incolla il seguente programma e premi "F7" sulla tastiera e osserva l'angolo in basso a sinistra dello schermo per vedere se ricevi un messaggio "Costruisci riuscito". Se è così, resta solo un passo prima di compilare ed eseguire! In caso contrario, ripassa i passaggi o commenta di seguito e forse posso aiutarti.

 
    #include &ltopencv\cv.h> 
    #include &ltopencv\highgui.h> 

    int main(int argc, char* argv) 
    { // openCV .image object 
     cv::Mat inputImage; 

     //Create a Window 
     cv::namedWindow("window",1); 

     // Initialize our image. 
     inputImage = cv::imread("Lenna.png"); 

     // Always check to make sure that image has data. 
     if(inputImage.empty()) 
     { 
      std::cout << "Image Failed to Load."; 
      return -1; 
     } 
     else 
     { 
      // All is well, display me. 
      cv::imshow("window",inputImage); 

      // Wait for user to press a key to exit. 
      cvWaitKey(0); 
     } 

     return 0; 
    } 
  • Se la compilazione è riuscita, quindi tutto ciò che resta è quello di aggiungere l'immagine nella cartella. Il posizionamento è molto importante. Ho copiato il direttorio in cui ho inserito il mio. Segui lo stesso modello di directory.

    • "C: \ Users \ Josh \ Documenti \ Visual Studio 2012 \ Projects \ ConsoleApplication3 \ ConsoleApplication3 \ Lenna.png"
  • Ora premere "Ctrl + F5" Per costruire, compilare e corri ad osservare la tua immagine nella finestra !!

* SE AVETE UNA WEBCAM *

  • copiare e incollare il seguente codice per controllare se OpenCV sta lavorando senza essere tenuti a aggiungere un'immagine. Questo è utile perché se il codice sopra non funziona, ma questo codice lo fa, allora sai di mettere l'immagine nella cartella sbagliata.
 
    #include 
    #include 

    int main(int argc, char* argv) 
    { // openCV .image object 
     cv::Mat image; 

     //Create a Window 
     cv::namedWindow("window",1); 

     // Create the capture object. 
     cv::VideoCapture device; 

     // Open your webcam. 
     device.open(0); 

     while (1) 
     { 
      // Read data from your device and store it to the image frame. 
      device >> image; 

      // Always check to make sure that image has data. 
      if(image.empty()) 
      { 
       std::cout<< "Image Failed to Load."; 
       return -1; 
      } 
      else 
      { 
       // All is well, display me. 
       cv::imshow("window",image); 

       // Wait for user to press a key to exit. 
       cvWaitKey(33); 
      } 
     } 

     return 0; 
    } 

Felice Coding !! Fammi sapere se qualcosa non ha funzionato in modo da poter risolvere il problema!

+0

grazie a Josh Sanders e YankeeWhiskey. Sto usando opencv, compilato senza TBB, openni –

+0

Nessun problema! Potresti selezionare una di queste come risposta accettata? –

0

Ho installato nuovamente opencv-master, opencv-2.4.5 e opencv-2.4.7 entrambi sul mio nuovo laptop. La funzione imread di OpenCV-2.4.7 è sempre risultata nulla ma C-cvImageLoad ha funzionato bene e cvLoadImage di opencv-master non ha funzionato cvImageLoad o mi sono perso qualcosa. Ma la dir di TBB deve essere .../bin/ia32 non intel64 il mio sistema operativo è a 64 bit ma VS201x a 32 bit questo era il mio errore.E ho degli errori di cucitura e gpu e lo studio visivo sta raccontando l'errore e questo è in genere un errore di limite di allocazione della memoria e ho fatto le stesse cose come hai detto @dilgenter e ora funziona bene, ma solo 2.4.5 e python_d. l'errore di lib può verificarsi, questo non è un problema in modalità di debug che ho letto su questo da molti siti di forum. Cercherò di scoprire perché il file imita 2.4.7 restituisce l'elemento Mat nullo. Ma ora sono troppo occupato e questo è