我需要帮助。 几个月前,我在Windows上的Visual Studio中制作了这个c ++代码。我从该代码生成.exe文件,一切正常,就像这样。这是用于图像处理的简单代码。现在我尝试在Linux上的Eclipse中做同样的事情,以便我可以将可执行文件放在Linux Web服务器上。但我有这个错误:
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;
}
我认为这是输入源中的问题,因为它不是输入图像的固定名称。但是,我需要为每个应用程序用户动态更改输入源。 请帮助别人。我能做什么?
答案 0 :(得分: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
一切正常......试试吧告诉我!
答案 1 :(得分:0)
您需要包括:
-lopencv_photo