58

ubuntu 12.04でopenCV 2.4.2をコンパイルしてインストールしました。その下/usr/local/includeに、ディレクトリ/usr/local/opencv/usr/local/opencv2.

ここに私が書いたコードがあります:

#include <cv.h>
#include <highgui.h>
#include <iostream>
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;
}

このコマンドラインを使用してコンパイルしました:

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

コンパイル時のエラーはありませんでしたが、結果のバイナリを実行しようとすると/DisplayImage code.png、次のエラー メッセージが表示されます。

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

5 に答える 5

107

ローダーが見つけられる場所に共有ライブラリを配置していません。/usr/local/opencvおよびフォルダー内を調べて/usr/local/opencv2、いずれかのフォルダーに共有ライブラリ (通常は で始まり、lib通常は で終わるファイル.so) が含まれているかどうかを確認します。それらを見つけたら、という名前のファイルを作成し/etc/ld.so.conf.d/opencv.conf、ライブラリが保存されているフォルダーへのパスを 1 行に 1 つずつ書き込みます。

たとえば、ライブラリが次の場所に保存されている場合、これをファイル/usr/local/opencv/libopencv_core.so.2.4に書き込みます。opencv.conf

/usr/local/opencv/

次に実行します

sudo ldconfig -v

ライブラリが見つからない場合は、実行してみてください

sudo updatedb && locate libopencv_core.so.2.4

シェルで。updatedbOpenCV をコンパイルしてから再起動した場合は、実行する必要はありません。

参考文献:

Linux の共有ライブラリについて: http://www.eyrie.org/~eagle/notes/rpath.html

OpenCV 共有ライブラリの追加について: http://opencv.willowgarage.com/wiki/InstallGuide_Linux

于 2012-09-09T01:55:26.063 に答える
22

より明確にするために(そしてまとめるために)、上記の2つのことをしなければなりませんでした。

1-ファイル/etc/ld.so.conf.d/opencv.confを作成し、opencvライブラリが保存されているフォルダーのパスを書き込みます。(Cookytによる回答)

.so2- LD_LIBRARY_PATH () にopencv のファイルのパスを含めます。

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/opencv/lib
于 2013-05-08T09:09:41.607 に答える