errore di compilazione del programma openCV “libopencv_core.so.2.4: imansible aprire il file object condiviso: nessun file o directory” in ubuntu 12.04

Ho compilato e installato openCV 2.4.2 in Ubuntu 12.04. Sotto /usr/local/include posso vedere le directory /usr/local/opencv e /usr/local/opencv2 .

Ecco il codice che ho scritto:

 #include  #include  #include  using namespace cv; using namespace std; int main(int argc,char **argv) { Mat image; image = imread(argv[1],1); if(argc != 2 || !image.data) { cout << "No image data\n"; return -1; } namedWindow("Display Image",CV_WINDOW_AUTOSIZE); imshow("Display Image",image); waitKey(0); return 0; } 

L’ho compilato usando questa riga di comando:

 g++ DisplayImage.cpp -o DisplayImage `pkg-config opencv --cflags --libs` 

Non ci sono stati errori di compilazione, tuttavia quando provo a eseguire il file binario risultante con /DisplayImage code.png viene visualizzato il seguente messaggio di errore:

 ./DisplayImage: error while loading shared libraries: libopencv_core.so.2.4: cannot open shared object file: No such file or directory 

Non hai messo la libreria condivisa in una posizione in cui il caricatore può trovarla. guarda all’interno delle cartelle /usr/local/opencv e /usr/local/opencv2 e verifica se uno di essi contiene librerie condivise (file che iniziano in lib e terminano solitamente in .so ). quando li trovi, crea un file chiamato /etc/ld.so.conf.d/opencv.conf e /etc/ld.so.conf.d/opencv.conf i percorsi delle cartelle in cui sono memorizzate le librerie, una per riga.

ad esempio, se le librerie fossero archiviate in /usr/local/opencv/libopencv_core.so.2.4 , scriverei questo nel mio file opencv.conf :

 /usr/local/opencv/ 

Quindi corri

 sudo ldconfig -v 

Se non riesci a trovare le librerie, prova a eseguire

 sudo updatedb && locate libopencv_core.so.2.4 

in una shell. Non è necessario eseguire updatedb se si è riavviato dalla compilazione di OpenCV.

Riferimenti:

Informazioni sulle librerie condivise su Linux: http://www.eyrie.org/~eagle/notes/rpath.html

Informazioni sull’aggiunta delle librerie condivise OpenCV: http://opencv.willowgarage.com/wiki/InstallGuide_Linux

Per renderlo più chiaro (e per metterlo insieme) ho dovuto fare due cose sopra menzionate.

1- Crea un file /etc/ld.so.conf.d/opencv.conf e scrivici i percorsi della cartella in cui sono memorizzate le tue librerie opencv. (Risposta di Cookyt)

2- Includere il percorso dei file .so di opencv in LD_LIBRARY_PATH ()

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv/lib 

La risposta di Umair R è principalmente la mossa giusta per risolvere il problema, poiché questo errore era causato dai collegamenti mancanti tra le librerie opencv e il programma. quindi c’è la necessità di specificare la configurazione di ld_libraty_path. ps. il solito percorso della libreria dovrebbe essere:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

Ho provato questo e ha funzionato bene.

Trova la cartella contenente la libreria condivisa libopencv_core.so.2.4 utilizzando la seguente riga di comando.

 sudo find / -name "libopencv_core.so.2.4*" 

Poi ho ottenuto il risultato:

  /usr/local/lib/libopencv_core.so.2.4. 

Creare un file chiamato /etc/ld.so.conf.d/opencv.conf e scrivere su di esso il percorso della cartella in cui è memorizzato il binario. Ad esempio, ho scritto /usr/local/lib/ sul mio opencv.conf file. Esegui la riga di comando come segue.

 sudo ldconfig -v 

Prova a eseguire di nuovo il comando.

Aggiungi questo link:

 /usr/local/lib/*.so.* 

Il totale è:

 g++ -o main.out main.cpp -I /usr/local/include -I /usr/local/include/opencv -I /usr/local/include/opencv2 -L /usr/local/lib /usr/local/lib/*.so /usr/local/lib/*.so.*