1 安装软件
安装QT
可以在这里下载http://download.qt.io/archive/qt/5.14/
组件根据个人电脑安装情况选MinGW、msvc的对应版本;
然后添加C:\Qt\Qt5.11.1\5.11.1\msvc2017_64\bin到系统环境变量path中;
安装cmake
下载后,安装点下一步即可,然后把路径加到path中(不加也可以)
安装hdf5
下载源码安装没成功. 下载cmake版本的源码,解压;
源码目录下有相应的bat文件,选择合适的bat文件,(我直接运行bat文件,失败了),复制里面的文本;
管理员模式打开cmd或者powershell,进入解压的文件夹下,执行刚才复制的文本;
生成hdf5的压缩包,exe文件(一些情况下)把其中名字类似HDF5-1.10.5-win64.zip的压缩包解压,就是库、包文件;
把bin所在的路径添加到系统环境变量中
visual studio 2017
sdk工具
还需要安装windows的sdk工具,用于debug,sdk下载
否则可能导致错误:
debug时显示the selected debugger may be inappropriate for the inferior…
imshow 无法解析的外部命令未找到,但在安装了上面的sdk后,解决问题
2 编译opencv4.1
2.1 cmake生成sln
下载opencv和对应版本的contrib,解压到cvdir文件夹下,新建build文件夹;
用管理员身份打开cmake-gui,在source code和where to build分别选择opencv文件夹和build文件;
点击configure,指定生成器为VS(要与安装的qt的版本相同),需要的话在下面选择x64,否则默认为32位,勾选默认编译器,点击finish开始configure;
configure完成后,勾选with_qt和with_opengl,选择OPENCV_EXTRA_MODULES_PATH变量设置为contrib/modules文件夹位置,勾选cxx11,否则后面会报错,WITH_OPENCL_D3D11_NV不勾选,否则报错;
如果有报错'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA' was not declared in this scope ...
,在文件opencv/sources/modules/videoio/src/cap_dshow.cpp的开头
#include "
DShow.h"
之前加上#define NO_DSHOW_STRSAFE
,;
再点configure;( 不要勾选WITH_MSMF,不要勾选ENABLE_PRECOMPILED_HEADERS,对我的configure没有影响)(configure时会下载一些东西,如果下载失败,参考https://blog.csdn.net/KayChanGEEK/article/details/79919417,手动下载并改名字。)完成后,确认变量 设置 QT_MAKE_EXECUTABLE 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\bin\qmake.exe设置 Qt5Concurrent_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Concurrent设置 Qt5Core_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Core设置 Qt5Gui_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Gui设置 Qt5Test_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Test设置 Qt5Widgets_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5Widgets设置 Qt5OpenGL_DIR 为 E:\Qt\Qt5.9.3\5.9.3\mingw53_32\lib\cmake\Qt5OpenGL设置 CMAKE_BUILD_TYPE 为 Release 或者 RelWithDebInfo第一个变量需要手动添加(根据前面选择,路径mingw改为MSVC)再次configure(在opencv中检查hdf是否找到);然后generate。
2.2 使用MSVC编译生成新的opencv
用MSVC打开刚才build中的opencv.sln工程,release+x64位;
选择右击all-build,生成(或者生成-重新生成);
然后右键install-生成-仅用于项目-仅生成install
如果遇到错误MSB3073: 命令“setlocal 巴拉巴拉”
的解决方案:
右键INSTALL"
设置" —》“配置属性” —》”生成事件”–》“后期生成事件”—》在“生成中使用”修改为“否”。
在build/install文件夹下就是新生成的opencv。
在系统路径path加上build\install\install\x64\vc15\bin。
(关于使用release还是debug版本:测试中发现如果是release版本,在qt中只能使用release模式;如果是debug,则两种模式都能用。但是上一行中的bin环境变量只能使用一个,否则可能冲突。)
3 测试
在.pro中加上下面配置
INCLUDEPATH += C:\opencv\build346\install\include\opencv2INCLUDEPATH
+= C:\opencv\build346\install\include\opencvINCLUDEPATH
+= C:\opencv\build346\install\includeLIBS
+= C:\opencv\install\x64\vc15\lib\opencv*.lib
添加的路径上不要有空格。
mainwindow.cpp内容
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// read an image
cv::Mat image = cv::imread("C://1.png", 1);
// create image window
cv::namedWindow("My Image");
// show the image on window
cv::imshow("My Image", image);
}
MainWindow::~MainWindow()
{
delete ui;
}
来源:CSDN
作者:zhiang张
链接:https://blog.csdn.net/jonathanzh/article/details/104375970