OpenCV:imread()未定义引用。

22

我已经在Eclipse Mars中配置了OpenCV 3.1.0。以下是我的配置:

G++包含目录:D:/opencv/build/install/include;GCC包含目录:D:/opencv/build/install/include

链接库:libopencv_core310,libopencv_highgui310

链接库路径:D:/opencv/build/lib(该目录下的文件类似于libopencv_core310.dll.a)

我遇到了以下错误:

imageRead.cpp:15: undefined reference to `cv::imread(cv::String const&, int)'

这是我的imageRead.cpp文件。

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"

using namespace std;
using namespace cv;

int main(int argc, const char** argv) {
    Mat img = imread("D:/sample.jpg", CV_LOAD_IMAGE_UNCHANGED);
    if (img.empty()) {
        cout << "Error: Image cannot be loaded." << endl;
        system("pause");
        return -1;
    }
    namedWindow("Image Window", CV_WINDOW_AUTOSIZE);
    imshow("Image Window", img);
    if (waitKey() == 27) {
        return -1;
    }
    destroyWindow("Image Window");
    return 0;
}

有人能帮忙解决这个错误吗?


它说:“启动进程时出错:无法运行程序” - Shinchan
1
这与你的原问题无关。 - berak
尝试在链接库中添加opencv_highgui。 - Sagar Patel
3个回答

45

自OpenCV3版本起,imread函数已经转移到了imgcodecs模块中。在将opencv_imgcodecs库添加到您的项目后,imread函数应该可以正常工作(注意:是imgcodecs,而不是imcodecs)。


1
实际代码为#include <opencv2/imgcodecs.hpp>。 - Juan David Torres

17

我建议链接以下库:

opencv_core
opencv_highgui
opencv_imgproc
opencv_imgcodecs

在 .cpp 文件中,你可以这样包含:

    #include <iostream>
    #include <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>

    using namespace std;
    using namespace cv;

或者

    #include <iostream>
    #include <opencv2/opencv.hpp>

    using namespace std;
    using namespace cv;

3

这个函数位于opencv_imgcodecs库中。值得一提的是,为了成功链接,您可能需要在库之前放置对象文件:

g++ -c -I/usr/include/opencv4/opencv -I/usr/include/opencv4 main.cpp
g++ main.o -lopencv_imgcodecs $(OTHER_FLAGS) -o main

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接