带有QT 5.1.0错误的OpenCV 2.4.6

时间:2013-07-26 10:53:19

标签: qt opencv

我试图让OpenCv2.4.6与QT5.1.0一起使用 到目前为止,我已遵循本指南Qt creator 5.0.1 with OpenCv 2.3.4 on windows

在完成示例应用程序(在QtCreator中使用OpenCv显示图像)后,我不幸地遇到了这些错误:

[Project-Path]\main.o:-1: In function `main':
[Project-Path]\main.cpp:8: error: undefined reference to `cv::imread(std::string const&, int)'
[Project-Path]\main.cpp:9: error: undefined reference to `cv::namedWindow(std::string const&, int)'
[Project-Path]\main.cpp:10: error: undefined reference to `cv::_InputArray::_InputArray(cv::Mat const&)'
[Project-Path]\main.cpp:10: error: undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
[Project-Path]\main.cpp:11: error: undefined reference to `cv::waitKey(int)'
[Project Build Path Desktop Debug]\debug\main.o:-1: In function `ZN2cv3MatD1Ev':
   [OpenCV/Install/include]\opencv2\core\mat.hpp:278: error: undefined reference to `cv::fastFree(void*)'
[Project Build Path Desktop Debug]\debug\main.o:-1: In function `ZN2cv3Mat7releaseEv':
   [OpenCV/Install/include]\opencv2\core\mat.hpp:367: error: undefined reference to `cv::Mat::deallocate()'
collect2.exe:-1: error: error: ld returned 1 exit status

“[]”路径是我的格式,应该有助于跟踪。

的main.cpp

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


using namespace cv;
int main() {
        // read an image
        Mat image = imread("img.jpg");
        namedWindow("My Image");
        imshow("My Image", image);
        waitKey(5000);

        return 1;
}

myFirstOpenCVProject.pro

QT       += core
QT       -= gui
TARGET = myFirstOpenCVProject
CONFIG   += console
CONFIG   -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += C:/qt/OpenCV246_bin/install/include
LIBS += -LC:/qt/OpenCV246_bin/install/lib/lopencv_core246.dll
LIBS += -LC:/qt/OpenCV246_bin/install/lib/lopencv_highgui246.dll
LIBS += -LC:/qt/OpenCV246_bin/install/lib/lopencv_imgproc246.dll
LIBS += -LC:/qt/OpenCV246_bin/install/lib/lopencv_features2d246.dll
LIBS += -LC:/qt/OpenCV246_bin/install/lib/lopencv_calib3d246.dll
你可以帮我解决这个问题吗? 我找不到任何适合我案例的解决方案......

2 个答案:

答案 0 :(得分:3)

-L是将目录添加到搜索路径中。实际的库是通过-l添加的。正确的行是:

LIBS += -LC:/qt/OpenCV246_bin/install/lib -llopencv_core246 -llopencv_highgui246 ...

答案 1 :(得分:0)

我认为你缺少opencv的静态库:

opencv_core246.lib
opencv_highgui246.lib
opencv_video246.lib
opencv_ml26d.lib
opencv_legacy246.lib
opencv_imgproc246.lib
opencv_whatever.lib

不太了解专业指令。也许是这样的:

LIBS +=  -Lc:/blabla/opencv_imgproc246.lib