win10下利用CMake重新编译OPenCV+QT(MSVC2015)

前言

由于我在用CMake编译的时候遇到了很多问题,网上的文章都不是很全需要翻阅很多文章。所以我在这将我的编译过程和遇到的问题进行总结,供日后翻阅;只针对CMake进行操作

运行环境

  • Windows10
  • Visual Stdio 2015
  • OPenCV 4.0.1
  • Qt 5.9.5
  • CMake-gui

下载安装

OPenCV官网下载OpenCV源码包(我使用的OpenCV网盘提取码:v17q )

开始编译

  • 记住OpenCV源码的安装路径,打开CMake,选择好源码的路径和编译后的保存路径。
    源码路径
    在这里插入图片描述
  • 在选择好路径之后点击下面的Configure
    在这里插入图片描述
  • 在弹出窗口中选择

选择Visual Stdio 2015
在这里插入图片描述
选择好x64和下面的default native compilers在这里插入图片描述

第一次错误处理

  • 点击Finish后等待完成,期间注意下面的弹窗,出错部分会显示为红色。
    例:红色报错有时候网络很差,下载速度极慢或者干脆一直下载失败···CMake-Configure也会失败。看到错误提示后根据提示从CMakeDownloadLog.txt中查看下载错误。因情况而定
#use_cache "D:/OpenCV401x64/opencv/sources/.cache"
#do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg"
#missing "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg/opencv_ffmpeg.dll"
#cmake_download "D:/OpenCV401x64/opencv/sources/.cache/ffmpeg/849286ccc527c99e5a218b67f13c6e8c-opencv_ffmpeg.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"
# timeout on name lookup is not supported
# getaddrinfo(3) failed for raw.githubusercontent.com:443
# Couldn't resolve host 'raw.githubusercontent.com'
# Closing connection 0
# 

#do_copy "opencv_ffmpeg_64.dll" "96444a4645753aaafa296479665c9185" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg_64.dll" "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg"
#missing "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg/opencv_ffmpeg_64.dll"
#cmake_download "D:/OpenCV401x64/opencv/sources/.cache/ffmpeg/96444a4645753aaafa296479665c9185-opencv_ffmpeg_64.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg_64.dll"
# timeout on name lookup is not supported
# getaddrinfo(3) failed for raw.githubusercontent.com:443
# Couldn't resolve host 'raw.githubusercontent.com'
# Closing connection 0
# 

#do_copy "ffmpeg_version.cmake" "f710891525a04586d565d0e700e62a9c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/ffmpeg_version.cmake" "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg"
#missing "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg/ffmpeg_version.cmake"
#cmake_download "D:/OpenCV401x64/opencv/sources/.cache/ffmpeg/f710891525a04586d565d0e700e62a9c-ffmpeg_version.cmake" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/ffmpeg_version.cmake"
# timeout on name lookup is not supported
# getaddrinfo(3) failed for raw.githubusercontent.com:443
# Couldn't resolve host 'raw.githubusercontent.com'
# Closing connection 0
# 

那么问题来了。
去哪里下载?
下载后放哪里?
CMake会在opencv-source目录下有一个.cache文件。如果下载失败的话,里面会有需要下载的内容且里面所有下载失败文件大小会为0KB
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 这个时候再看看下载日志文件中的第一句
    #use_cache "D:/OpenCV401x64/opencv/sources/.cache"意思就是需要从.cache中找
  • 第二句
    #do_copy "opencv_ffmpeg.dll" "849286ccc527c99e5a218b67f13c6e8c" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll" "D:/OpenCV401x64/rebuild/3rdparty/ffmpeg"意思是从"https://raw.githubusercontent.com/opencv/opencv_3rdparty/759a23e24ab787a0979f8a93103dcc3105ec10c1/ffmpeg/opencv_ffmpeg.dll"网址下载丢失的文件并把它复制到:"D:/OpenCV401x64/rebuild/3rdparty/ffmpeg"
  • 这个时候我们就将网址复制下来找个下载器下载需要的文件就可。值得注意的是有的时候因为“网络问题”可能需要科学上网。下载好文件后只需要将下载好的文件复制到.cache目录下的对应文件的指定位置。需要注意将MD值加在文件名前面 格式:“MD值” + “-” + “文件名”。其实只需要将0KB的文件名“-”号前面的值复制到下载好的文件的文件名前就行。在这里插入图片描述
  • 在将上一步缺失的文件整理好后就可以进行下一步了:再次点击configure会发现不再有下载错误了。

将QT环境编译进OpenCV

  • 在经过上面的步骤后,我们已经将OpenCV环境准备好了。接下来将把QT加入到OpenCV中供我们使用
    首先勾选WITH_QTWITH_OPENGL再次点击configure如果之前的QT安装环境变量没有出现问题就可以在VS中进行编译了。
    WITH_QT
    WITH_OPENGL

第二次错误处理

  • 由于我是用MSVC2015作为QT的编译器由于没有自己添加环境变量导致CMAKE找不到DIR在这里插入图片描述
  • 看到这些错误的时候不要怕只需要找到QT的安装路径将所用编译器的对应目录填进取就可了。填写好目录后点击Generate完成后会提示Generating done

编译环境

  • 点击Open Project自动打开vs2015, 找到CMakeTargets下的INSTALL,在Debug和Release下分别右键生成即可。编译需要比较长的时间,编译完成后,就可以编译目录下的install文件夹下看到。
  • 打开VS后先右击ALL_BUILD选择生成等待电表倒转完成后,再生成下面的INSTALL
    在这里插入图片描述
    全部完毕后在一开始设置好的编译后保存目录中寻找install文件夹
  • 将文件夹下所有内容替换复制到opencv\build
    在这里插入图片描述
    在这里插入图片描述

最后的环境配置

  • 到了这一步就已经看到了最后的胜利

  • 新建一个C++空项目选择x64
    在这里插入图片描述

  • 在属性管理器中的Debug | x64目录下添加新建项目属性表这里我取名为OpenCVx64D,打开属性设置在这里插入图片描述

  • 在VC++目录中的库目录中添加路径.\opencv\build\x64\vc15\lib这个是上一步替换后的路径
    在这里插入图片描述

  • 同在VC++ 目录下的包含目录中添加以下两条D:\OpenCV401x64\opencv\build\includeD:\OpenCV401x64\opencv\build\include\opencv2
    在这里插入图片描述

  • 需要从这里找到两个附加依赖项否则编译会出问题在这里插入图片描述

  • 在连接器的输入中添加附加依赖项opencv_world401d.lib记住Debug下一定要用d结尾的Release下用去掉d的。
    在这里插入图片描述

  • 到此所有的环境都已经配置好了跑一个例子测试一下,完美!
    在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值