1

助けが必要です。数か月前、Windows の Visual Studio でこの C++ コードを作成しました。そのコードから .exe ファイルを作成すると、このようにすべてが正常に機能します。これは、画像処理のための単純なコードです。Linux Webサーバーに実行可能ファイルを配置できるように、LinuxのEclipseで同じことをしようとしています。しかし、私はこのエラーがあります:

In function `main':
main.cpp:(.text.startup+0x317): undefined reference to `cv::inpaint(cv::_InputArray const&, cv::_InputArray const&, cv::_OutputArray const&, double, int)'
collect2: ld returned 1 exit status
make: *** [inpaint] Error 1

OpencCV 2.4.1 ライブラリを使用しています。これはソースコードです:

#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/photo/photo.hpp"
#include <iostream>


using namespace cv;
using namespace std;
Mat img, img0, maska;
int main( int argc, char** argv )
{

...
   }
Mat inpainted;
inpaint(img0, img, inpainted, 2, CV_INPAINT_NS);
char imeobr[256] = "images/img-uploads/finish";
strcat( imeobr, argv[1] );
strcat( imeobr, ".jpg" );
imwrite(imeobr, inpainted);
return 0;
}

は入力画像の固定名ではないため、入力ソースの問題だと思います。ただし、アプリケーションのユーザーごとに入力ソースを動的に変更する必要があります。人々を助けてください。私は何ができますか?

4

2 に答える 2

3

ライブラリのリンクを省略すると、未定義の参照エラーが発生します。

プロジェクトの設定で:

C/C++ Build -> GCC C++ Linker -> Libraries

Libraries(-l) に libopencv_imgproc ライブラリを入力しましたか?

アップデート

テスト用に、プログラムを作成しました。

#include <opencv/highgui.h>
#include <opencv/cv.h>

using namespace cv;

int main(int argc, char* argv[]) {
  Mat img, img0;
  Mat inpainted;
  inpaint(img0, img, inpainted, 2, CV_INPAINT_NS);
}

私がリンクしたライブラリで:

opencv_imgproc 
opencv_highgui
opencv_core

すべてが正常に動作します..試してみて、教えてください!

于 2012-12-06T10:11:38.667 に答える