opencv在QT中的配置和使用教程
本文使用的软件包:
QT、cmake、opencv库
由于主要参考的是以下两个博客,这里就根据他们的内容关键点截图加上一些自己遇到的问题来写,具体细节可参考下面两个链接。
1. https://blog.csdn.net/luolaihua2018/article/details/111409213
2. https://blog.csdn.net/ltc0106/article/details/100189313
一、软件安装
(1)QT
下载地址:http://download.qt.io/archive/qt/5.13/5.13.0/
QT安装具体细节见博客2,注意以下几步
同时注意系统变量的添加,博客二中有详细说明。
(2)cmake
下载地址: https://cmake.org/download/
选最新版本即可
(3)opencv
下载地址: https://opencv.org/releases/
根据自己的系统选择
二、使用cmake编译opencv
(1)根据自己的opencv版本号选择解压
(2)等待源代码解压完成
(3)解压完成后,启动刚刚安装好的Cmake程序,自己填写OpenCV刚刚解压的源码目录,以及自己新建一个文件夹用于存放编译完成的opencv,填写到下一行的编译目标目录,然后点击下方的configure按钮进行第一次配置。
(4)选择MinGw Makefiles,然后选择第二项,完成后点击下一步
(5)指定c编译器和c++编译器的路径,请找到你的QT目录\Tools\mingw730_64\bin下的gcc.exe和g++.exe程序,依次对应填写。
(6)等待第一次configure完成。(configure到最后可能会下载opencv_videoio_ffmpeg相关库文件,如果没有梯子的话可能会比较久)
(7)configure完成后,需要配置一些参数。
在第三行的Search中,搜索WITH_QT,打勾。
搜索WITH_OPENGL,打勾。
搜索ENABLE_PRECOMPILED_HEADERS,取消打勾。
搜索QT5_DIR,将“你的QT路径\5.13.0\mingw73_64\lib\cmake\Qt5”填进去。 例如我的是:D:\WorkApp\QT\5.13.0\mingw73_64\lib\cmake\Qt5,完成以上操作后点击Configure进行第二次Configure。
(8)第二次Configure完成后,点击Generate生成opencv编译文件到目标目录。
(7)(8)步中可能会遇到不同的情况,此时可根据具体情况google or百度,直到Configure done.
(9)Generating done之后,打开win10的Windows PowerShell命令行(按住Shift键,然后在桌面或文件资源管理器窗口空白处点击右键,在弹出的右键菜单中选择“在此处打开PowerShell窗口”即可打开Windows PowerShell)如图:,输入命令cd 进入到你的opencv的目标目录,然后开始编译(这次编译比较耗时间,具体耗时长短由你的CPU性能而定)。QT中的MinGw组件务必选取正确,如果选择了其他的这一步可能会出现无法编译。
编译命令:
mingw32-make.exe -j(线程数量)
线程数量根据自己电脑cpu性能酌情填写。4核CPU就填4,8核心就填8,以此类推,例如我是8核心的就填“mingw32-make.exe -j8”即可,如果直接mingw32-make.exe命令编译的话会很慢,在用四线程或者更高线程时会快很多,但是可能会出现各种错误,出现错误时可修改线程数继续编译,如果仍不成功需自行google or 百度解决方案,参考博客1和2中给出了一些常见问题的解决方法。这也是整个配置过程中最复杂的一步。
(10)漫长的等待后,终于完成了,完成之后输入命令“mingw32-make.exe install”完成最后的编译,完成后,opencv库的编译已经成功。
mingw32-make.exe install
(11)将opencv编译好的库文件路径加入系统变量path中。
(12)最后再添加一个新的环境变量名字 OPENCV_SDK_DIR 变量值就是你编译好的opencv目录的install文件夹的路径,示例如下图
(四)在QT中进行测试
每次在QT中新建文件时要注意文件路径必须是英文,打开.pro文件,加入
INCLUDEPATH += D:\opencv\opencv\opencv-build\install\include\opencv2 \ D:\opencv\opencv\opencv-build\install\include LIBS += D:\opencv\opencv\opencv-build\install\x64\mingw\lib\libopencv*.a
根据自己的include和lib文件路径进行选择!*.a表示所有不同后缀的文件
QT中一些常见的头文件:
#include <opencv2/highgui/highgui_c.h> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> using namespace cv;
测试程序(打开一张图片):
int main() { cv::Mat img; img = cv::imread("C:\\Users\\study\\Pictures\\1.png");//参数1:图片路径。参数2:显示原图 namedWindow("窗口1",CV_WINDOW_NORMAL); /*注释 参数1:窗口的名字 参数2:窗口类型,CV_WINDOW_AUTOSIZE 时表明窗口大小等于图片大小。不可以被拖动改变大小。 CV_WINDOW_NORMAL 时,表明窗口可以被随意拖动改变大小。 */ imshow("窗口1", img);//在“窗口1”这个窗口输出图片。 waitKey(5000);//等待5秒,程序自动退出。改为0,不自动退出。 return 0; }
成功显示即大功告成!