【发布时间】:2020-06-20 14:40:54
【问题描述】:
我一直在关注书中的 OpenCV 教程。在此之前,我的机器上已经安装了 OpenCV。我正在终端上使用 OpenCV 和 C++,并使用 CMake 编译我的程序。这是我的 Ubuntu OpenCV 版本:
Ubuntu 18.04.4 LTS
OpenCV version : 4.2.0
书中的结果与我的不同,显然他们使用的是 QT。在接下来的几章中,他们仍然使用 Qt。所以,我继续使用以下代码安装 Qt:
sudo apt-get install qtcreator
sudo apt-get install qt5-default
我还关注了Qt Wiki 的安装文档。当我检查我的 Qt 版本时,这就是我得到的:
$ qmake --version
QMake version 3.1
Using Qt version 5.9.5 in /usr/lib/x86_64-linux-gnu
所以,现在我已经在我的机器上安装了 Qt,但是如何将它与我的 OpenCV 集成,以便我可以在我的程序中使用它而不是放置 highgui lib ?我遇到了这个错误:
The library is compiled without QT support in function
一直在网上找了一圈,还是不知道如何正确整合。
我尝试了什么
显然,除了完全卸载 OpenCV,然后在打开 QT 的情况下编译并重新安装它之外,别无他法。这就是我所做的:
-
完全卸载 OpenCV,然后通过从 Github 克隆 OpenCV 和 OpenCV contrib 重新安装它(已经安装了 3 次),在终端中使用 CMake 构建 OpenCV 期间,我添加了
WITH_QT = ON。这是我使用的完整设置:cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D WITH_TBB=ON \ -D WITH_V4L=ON \ -D WITH_QT=ON \ -D WITH_OPENGL=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..
没问题,我正确安装了 OpenCV(用几个程序测试过)。这是版本:
$ pkg-config --modversion opencv
4.2.0
我也遇到了这个问题:OpenCV integration With Qt,但仍然没有解决方案。但是,为什么即使在我使用 WITH_QT=ON 完全重新安装、构建和制作 OpenCV 之后,任何带有 QT 的项目(我有 QT_RADIOBOX 和 createButton 上的其他项目)仍然会出错? CMake是否找不到QT?
terminate called after throwing an instance of 'cv::Exception'
what(): OpenCV(4.2.0-dev) /home/raisa/opencv_build/opencv/modules/highgui/src/window.cpp:597:
error: (-213:The function/feature is not implemented)
The library is compiled without QT support in function 'createButton'
[2] 10467 abort (core dumped) ./exerc13
这里是createButton:
//Create buttons
createButton("Blur", blurCallback, NULL, QT_CHECKBOX, 0);
createButton("Grey", greyCallback, NULL, QT_RADIOBOX, 0);
createButton("RGB", bgrCallback, NULL, QT_RADIOBOX, 1);
createButton("Sobel", sobelCallback, NULL, QT_PUSH_BUTTON, 0);
有什么建议吗?
更新
我阅读了有关 Qt 集成的显式路径定义,而不是仅仅放置“WITH_QT=ON”。所以我决定使用 cmake-gui 并为 Qt 路径配置定义了每个路径。像这样:
WITH_QT=ON (checked in cmake-gui)
Qt5Concurrent_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Concurrent
Qt5Core_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Core
Qt5Gui_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Gui
Qt5OpenGL_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5OpenGL
Qt5Test_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Test
Qt5Widgets_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5Widgets
Qt5_DIR = /home/raisa/Qt5.9.9/5.9.9/gcc_64/lib/cmake/Qt5
(Qt 安装遵循Qt Wiki 的安装文档)
再次,OpenCV 安装完美。通过运行简单的程序进行测试。但是对于 Qt 仍然遇到相同的错误。我也不能让 OpenGL 与 OpenCV 一起工作。建议?
【问题讨论】:
-
要在qt上使用opencv,你只需要在.pro文件中添加库和标志
-
@YunusTemurlenk 我没有在 QT(QT 编辑器)上使用 OpenCV。我将 C++ (.cpp) 与 OpenCV 库一起使用,我在终端中编写代码并希望将 QT 集成到其中。
标签: c++ qt opencv cmake terminal