由于毕设原因,需要使用OpenCv来做图像识别,IDE选择了自己擅长的Qt。话不多说,直接开始环境的搭配。
1、必要工具准备
Qt安装选择
在从官网下载好Qt的安装包之后,就要进入各种安装选择,要注意的是在安装选项中必须选择mingw,安装包在我移动硬盘里,正在快递过来,之后补上图片,这里有要注意的地方。
=============补充===================

================================
注意Qt官网下载要先进行注册,然后才能下载。
https://account.qt.io/downloads
Cmake安装
这个很简单只需从官网下载即可。
https://cmake.org/download/
下载好后默认安装。
openCV下载安装
同样从官网下载安装,找到对应的版本即可,我这里是openCv2.0的版本。
https://opencv.org/releases.html
2、开始cmake编译
准备好文件目录

注意第一行是openCv的安装目录下的sources文件夹,第二行是编译后的文件目录。
编译器选择

在cmake界面的最下方,点击configure按钮,下拉选择MinGw Makefiles

编译正式开始
再次点击configure按钮开始编译,这时可能会报错:

这是提示没有找到MinGw编译器。

修正方法:
- 1、勾选图片中的Gouped和Advanced选项
- 2、下拉CMAKE,你会发现CMAKE_MAKE_PROGRAM选项提示NOTFOUND
- 3、在CMAKE_MAKE_PROGRAM选项后面添加QT的mingw编译器位置
Qt安装目录/Tools/mingw/mingw32-make.exe - 4、至于CMAKE_SH是shell脚本,与我们这里没什么关系。
之后应就没什么问题了,再再次点击configure。

在编译完成后,将WITH选项中的WITH_QT选中,另外WITH_OpenGL选项最好也选上
OpenGL
OpenGL(全写Open Graphics Library)是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。
OpenGL™ 是行业领域中最为广泛接纳的 2D/3D 图形 API,其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL™ 是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL™ 帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。

再再再次点击configure,这时又可能报错:


图中红色的是报错部分,下拉可以发现提示和QT有关的错误是Qt5Concurrent_DIR,Qt5Core_DIR,Qt5Gui_DIR,Qt5Test_DIR,Qt5Widgets_DIR,Qt5OpenGL_DIR这些NOTFOUND,至于QT_QMAKE_EXECUTABLE可以无视,如果有强迫症的人可以加上
它们的Value分别填写为:
- 安装目录/Qt5.3.1/mingw482_32/bin/qmake.exe
- 安装目录/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5Concurrent
- 安装目录/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5Core
- 安装目录/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5Gui
- 安装目录/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5Test
- 安装目录/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5Widgets
- 安装目录/Qt5.3.1/5.3/mingw482_32/lib/cmake/Qt5OpenGL
最后一次点击configure按钮,然后按generate按钮。之后应就不会报错了
最后一步是用cmd进入编译后的文件目录,利用mingw32-make命令进行编译

需要花很长一段时间来编译。编译完的目录如下:

其中有用的只有bin目录和lib目录,将其他目录删去并添加OpenCv安装目录/build/include到编译目录中得到:

3、在Qt中使用OpenCv
将bin目录添加到环境变量
将编译后的文件目录下的bin目录添加的环境变量中的PATH中。右键我的电脑,点击高级配置选项,点击环境变量,找到PATH,在最后添加上bin目录绝对路径即可。win10以下是 : " ;+绝对路径 ",win10直接添加就可以了。
配置.pro文件
在Qt中使用OpenCv主要是要配置好项目名.pro文件,在文件中最后部分添加:
INCLUDEPATH+=D:\Qt\openCvQt\include\opencv\
D:\Qt\openCvQt\include\opencv2\
D:\Qt\openCvQt\include
LIBS+=OpenCv编译后目录\lib\libopencv_calib3d310.dll.a\
OpenCv编译后目录\lib\libopencv_core310.dll.a\
OpenCv编译后目录\lib\libopencv_features2d310.dll.a\
OpenCv编译后目录\lib\libopencv_flann310.dll.a\
OpenCv编译后目录\lib\libopencv_highgui310.dll.a\
OpenCv编译后目录\lib\libopencv_imgproc310.dll.a\
OpenCv编译后目录\lib\libopencv_imgcodecs310.dll.a\
OpenCv编译后目录\lib\libopencv_ml310.dll.a\
OpenCv编译后目录\lib\libopencv_objdetect310.dll.a\
OpenCv编译后目录\lib\libopencv_photo310.dll.a\
OpenCv编译后目录\lib\libopencv_shape310.dll.a\
OpenCv编译后目录\lib\libopencv_stitching310.dll.a\
OpenCv编译后目录\lib\libopencv_superres310.dll.a\
OpenCv编译后目录\lib\libopencv_ts310.a\
OpenCv编译后目录\lib\libopencv_video310.dll.a\
OpenCv编译后目录\lib\libopencv_videoio310.dll.a\
OpenCv编译后目录\lib\libopencv_videostab310.dll.a
之后执行一次qmake命令,就可以正常使用了。
贴一段简单的代码:
#include "cv.h"
#include"cxcore.h"
#include"highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char *argv[])
{
Mat image = imread("图片路径");
namedWindow("window", WINDOW_NORMAL);
imshow("window",image);
waitKey(0);
return 0;
}
运行结果:

=============补充一个编译完成却不能运行问题=======================
昨天电脑系统突然炸了,重装了系统,把包括OpenCv在内的很多东西都丢了,在按照步骤重新编译一遍后发现程序运行总是突然停止运行,一直搞到凌晨3点钟才终于搞出来。解决方法就是:装visual studio。应该是OpenCv很多的程序要用到的一些库,我重装的系统上没有装。
心累。
网友评论