由于毕设原因,需要使用OpenCv来做图像识别,IDE选择了自己擅长的Qt。话不多说,直接开始环境的搭配。
1、必要工具准备
Qt安装选择
在从官网下载好Qt的安装包之后,就要进入各种安装选择,要注意的是在安装选项中必须选择mingw,安装包在我移动硬盘里,正在快递过来,之后补上图片,这里有要注意的地方。
=============补充===================
安装组件选择
Cmake安装
openCV下载安装
2、开始cmake编译
文件目录准备好文件目录
注意第一行是openCv的安装目录下的sources文件夹,第二行是编译后的文件目录。
configure位置编译器选择
在cmake界面的最下方,点击configure按钮,下拉选择MinGw Makefiles
编译器选择编译正式开始
再次点击configure按钮开始编译,这时可能会报错:
报错1
这是提示没有找到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
选中WITH_QT再再再次点击configure,这时又可能报错:
报错2 红色是报错部分
图中红色的是报错部分,下拉可以发现提示和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命令进行编译
使用mingw编译
需要花很长一段时间来编译。编译完的目录如下:
编译完成后目录其中有用的只有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很多的程序要用到的一些库,我重装的系统上没有装。
心累。