0

我正在尝试让 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

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

主文件

#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

你能帮我解决这个问题吗?我找不到任何适用于我的案例的解决方案...

4

2 回答 2

3

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

LIBS += -LC:/qt/OpenCV246_bin/install/lib -llopencv_core246 -llopencv_highgui246 ...
于 2013-07-26T11:37:43.833 回答
0

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

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

对pro命令不是很了解。也许是这样的:

LIBS +=  -Lc:/blabla/opencv_imgproc246.lib
于 2013-07-26T11:04:12.463 回答