使用 OpenCV 库(ubuntu)编译错误 Qt Creator

Posted

技术标签:

【中文标题】使用 OpenCV 库(ubuntu)编译错误 Qt Creator【英文标题】:Compilation error Qt Creator with OpenCV libraries(ubuntu) 【发布时间】:2020-08-20 03:34:05 【问题描述】:

我试图使用 OpenCV 中的一些库来设置 Qt IDE,这些库是我使用 cmake 从源代码构建的。我不太确定是因为我包含路径的方式还是什么,但我得到了这个编译错误,即使在多次更改路径之后也是如此。我正在使用 GCC arm 64 位编译器、Qt 5.9.5、opencv 4.4.0

g++ -c -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I../test -I. -isystem /usr/local/include -isystem /usr/local/include -isystem /usr/include/aarch64-linux-gnu/qt5 -isystem /usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o ../test/main.cpp
In file included from /usr/local/include/opencv2/core.hpp:54:0,
                 from /usr/local/include/opencv2/videoio.hpp:46,
                 from ../test/main.cpp:1:
/usr/local/include/opencv2/core/base.hpp:52:10: fatal error: opencv2/opencv_modules.hpp: No such file or directory
 #include "opencv2/opencv_modules.hpp"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
Makefile:359: recipe for target 'main.o' failed
make: *** [main.o] Error 1
11:24:40: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project test (kit: Desktop)
When executing step "Make"

这是我的 .pro 文件路径

INCLUDEPATH+= /usr/local/include
LIBS+= -L"/usr/local/lib"
LIBS += -lopencv_calib3d
LIBS += -lopencv_core
LIBS += -lopencv_features2d
LIBS += -lopencv_flann
LIBS += -lopencv_highgui
LIBS += -lopencv_imgcodecs
LIBS += -lopencv_imgproc
LIBS += -lopencv_ml
LIBS += -lopencv_objdetect
LIBS += -lopencv_photo
LIBS += -lopencv_shape
LIBS += -lopencv_stitching
LIBS += -lopencv_superres
LIBS += -lopencv_video
LIBS += -lopencv_videoio
LIBS += -lopencv_videostab

更新*** 我已将我的 .pro 文件更改为这样

INCLUDEPATH+=/usr/local/include/opencv4
LIBS+='pkg-config --cflags --libs opencv4'

因为编译器找不到 opencv_modules.hpp,我不得不将它直接从构建文件复制到我的 /usr/local/include/opencv4/opencv2 文件夹中。接下来我遇到了一个 func() 超出范围的错误,我必须通过执行 #include "opencv2/opencv.hpp" 而不是手动添加头文件来解决。

现在我的新编译错误是error: pkg-config --cflags --libs opencv4: No such file or directory

最终更新***** 问题出在LIBS+='pkg-config --cflags --libs opencv4',它不应该是'而是`。现在一切正常。感谢 Yunus Temurlenk 的帮助

【问题讨论】:

【参考方案1】:

以下是您应该检查并遵循的步骤:

    在安装opencv之前,请确保您正确安装了基础操作系统库,主要在here step2中描述。

    不要忘记在 cmake 期间启用标志 -D WITH_QT=ON

    我看到您已将 opencv 安装到 usr/local,这是建议的方式。安装opencv后,通过终端命令查看版本:

    pkg-config --modversion opencv4(或者只是 opencv 到你的配置)

确保此输出工作正常。

    将库链接到 Qt 的正确方法:
INCLUDEPATH += /usr/local/include/opencv4
LIBS += `pkg-config --cflags --libs opencv4`

【讨论】:

我已经完成了第 1 步和第 2 步。pkg-config --modversion opencv4 不起作用。所以我用cmake标志重建了配置。之后版本号可以正常工作。之后,我使用了您提供的路径并尝试构建。但是,我仍然面临着类似的问题 开始:"/usr/bin/make" g++ -c -pipe -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_CORE_LIB -I.. /测试-I。 -isystem /usr/local/include/opencv4 -isystem /usr/include/aarch64-linux-gnu/qt5 -isystem /usr/include/aarch64-linux-gnu/qt5/QtCore -I。 -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++ -o main.o ../test/main.cpp ../test/main.cpp:在函数'int main()'中: ../test/main.cpp:31:5: 错误:'imshow' 未在此范围内声明 imshow("Frame", frame); ^~~~~~ ../test/main.cpp:34:18: 错误:'waitKey' 未在此范围内声明 char c=(char)waitKey(25); ^~~~~~~ ../test/main.cpp:43:3: error: ‘destroyAllWindows’没有在这个范围内声明destroyAllWindows(); ^~~~~~~~~~~~~~~~~ Makefile:359: recipe for target 'main.o' failed make: *** [main.o] Error 1 14:24:34: The process “/usr/bin/make”以代码 2 退出。构建/部署项目测试时出错(套件:桌面)执行步骤“Make”时 所以你正确地做到了:1>cmake 2> make 3> make install 没有任何错误? 是的。哦,我无法正确运行 sudo add-apt-repository "deb security.ubuntu.com/ubuntu xenial-security main"(从步骤 1 开始),因为他们说存在一些旧文件或其他东西。但我认为这并不重要。

以上是关于使用 OpenCV 库(ubuntu)编译错误 Qt Creator的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu+cmake+opencv 静态库编译和使用

求救!!!linux opencv 静态库 链接问题,哪位大神帮帮我?

ubuntu18.04安装opencv的viz模块

Ubuntu16桌面版编译OpenCV4的java库和so库

Ubuntu16桌面版编译OpenCV4的java库和so库

ubuntu 11.10下安装openCV失败,求助