使用CMake来编译OpenCV,以匹配自己使用的VS版本。

主要有两步:

  1. CMake编译OpenCV源码得到OpenCV.sln工程文件。
  2. VS编译OpenCV.sln。

以最新的cmake-3.16.0-rc1-win64-x64、opencv-3.4.8、opencv_contrib-3.4.8为例,编译适合VS2013的x64版本。

【下载软件】解压后我都放到了D盘根目录

1、cmake-3.16.0-rc1-win64-x64.zip,解压直接可用

2、opencv-3.4.8源码文件Sources,解压即可

3、contrib库(下载opencv同版本,注意下边要点击选项卡选版本,别直接下载)

4.1、安装python(参考此链接1、2步),即便纯使用C++,也建议把python装上,深度学习必不可少。

4.2、安装numpy,打开cmd,输入 pip install numpy

【编译步骤】

1、cmake编译opencv源文件,生成OpenCV.sln。

以管理员身份运行D:\cmake-3.16.0-rc1-win64-x64cmake-gui.exe

单击一次Configure后,Search里筛选信息,带test的都不勾选,带java的都不勾选,其他参考上图红字。

留意下是否有BUILD_opencv_python3,如果没有说明此版本的opencv不支持python,如opencv4.2。

多次Configure后,打开D:\1\CMakeDownloadLog.txt,如果里边有https开头的东西,说明有文件下载失败。那么需要自己复制链接到迅雷下载。

定位CMakeDownloadLog.txt中出现copy的地方,把下载的文件放到对应的紧挨着copy的那个目录中,它会自动把文件重命名(MD5码-原名)放到相应的地方的。

如果没有出现copy,那么根据提示如D:/source/opencv-3.4.9/.cache/ippicv/1d222685246896fe089f88b8858e4b2f-ippicv_2019_win_intel64_20180723_general.zip,就把下载的ippicv文件放到它指定的目录,文件名用它指定的。

删掉D:\1\CMakeDownloadLog.txt,再次Configure,查看自动生成的CMakeDownloadLog.txt内容,没有https开头的东西,说明所有文件全部成功。单击Generate

2、VS打开OpenCV.sln,菜单栏:生成——批生成,勾选下图四个,生成,等待完成即可。

最终编译的结果在自动生成的D:\1\install文件夹中(适用于C++)。把install文件夹中include、x64文件夹拷贝到在D盘新建的文件夹opencv中,其他文件可以统统删除。

之后参考博文一次配置永久使用vs2013配置opencv2.4.13(txt中复制粘贴即可,一次配置永久使用),注意没有build目录了,找自己对应的目录即可。

【python说明】适用于python的文件cv2.cp37-win_amd64.pyd,会自动出现在你安装的python目录中D:\Python\Python37\Lib\site-packages\cv2\python-3.7。

注意会提醒——无法打开文件“python37_d.lib”,debug都会出现此问题,无关紧要,因为成功生成了release版(cmake生成目录D:\1\lib\python3\Release,若*.pyd没有出现在你的python目录中,就自己拷贝过去)。

【实战】https://blog.csdn.net/nnnnnnnnnnnny/article/details/52182091

【可能出现的问题解决方案】

问题都出现在VS编译OpenCV.sln阶段,而且都是quirc.c、quirc.h引起的。

1、如果出现下图inline相关的错误,在解决方案资源管理器中打开quirc.h,在最顶部加入如下代码后,重新第2步。

 

#if defined(WIN32) && !defined(__cplusplus)
#define inline __inline
#endif

2、出现size_t(quirc.c中)有关的错误,打开quirc.c(上图箭头下方的Source Files中能找到),把size_t改成如下unsigned long long。重新第2步。

    unsigned long long olddim = q->w * q->h;
unsigned long long newdim = w * h;
unsigned long long min = (olddim < newdim ? olddim : newdim);

CMake编译OpenCV的更多相关文章

  1. cmake编译opencv指南

    目录 cmake编译opencv指南 用包管理器安装 查看opencv相关的包 执行安装 编译安装 为什么编译安装 下载源码 编译脚本 执行编译脚本.解决3rdparty下载 编译后的设定-环境变量 ...

  2. cmake编译opencv时指定cuda版本

    之前有网友提问说,基于cmake编译时如果切换cuda版本,比如我同时装了cuda8和cuda9,opencv总是找到cuda9,我想用cuda8怎么办?实际上,手头上要配置的工程是基于opencv3 ...

  3. opencv第二课,使用cmake编译OpenCV,并添加opencv_contrib模块

    一.下载安装cmake 想要在Windows平台下生成OpenCV的解决方案,我们需要一个名为cmake的开源软件,可以在camke的官网:http://www.cmake.org/上下载到 或者点击 ...

  4. ubuntu下cmake编译opencv 3.4.3源码;

    在进行编译前,准备工作: 1)  到opencv官网下载源码(https://opencv.org/releases.html): 2)  安装qt(http://download.qt.io/); ...

  5. Cmake编译opencv下载不了ffmpeg时的解决办法

  6. Ubuntu系统---编译opencv程序的几种方式g++、Makefile、Cmake

    Ubuntu系统---编译opencv程序的几种方式g++.Makefile.Cmake 先建立一个工程(一个文件夹),写好xxx.cpp文件,可以是多个: //----------opencv.cp ...

  7. OpenCV.3.4.6_VS2015&cmake编译x86版本的bin&lib

    ZC:<<OpenCV3编程入门>> 的 2.2.2 中也有该内容的讲解 1.参考网址:opencv3.3.0+vs2015+cmake编译opencv x86 - wowo的 ...

  8. WIN7x64+VS2010+OpenCV2.4.10+cmake3.5.0重新编译OpenCV

    1,参考博文 Win7x64+VS2012+OpenCV2.4.3+CMake2.8.10+TBB41重编译OpenCV [OpenCV入门教程之七] 玩转OpenCV源代码:生成OpenCV工程解决 ...

  9. [转]VS2015+OpenCV3.3 GPU模块和opencv_contrib模块的编译以及采用CMake编译opencv_contrib时提示“No extra modules found in folder”问题的解决方案

    据官方说法,目前还不是太稳定的算法模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边.但是这里边有很多我们经常要用的算法 ...

随机推荐

  1. 【LOJ】#3097. 「SNOI2019」通信

    LOJ#3097. 「SNOI2019」通信 费用流,有点玄妙 显然按照最小路径覆盖那题的建图思路,把一个点拆成两种点,一种是从这个点出去,标成\(x_{i}\),一种是输入到这个点,使得两条路径合成 ...

  2. Java源码 -- LinkedList

    1.1.LinkedList概述 LinkedList是一种可以在任何位置进行高效地插入和移除操作的有序序列,它是基于双向链表实现的. LinkedList 是一个继承于AbstractSequent ...

  3. ElasticSearch中term和match探索

    一.创建测试数据 1.创建一个index curl -X PUT http://127.0.0.1:9200/student?pretty -H "Content-Type: applica ...

  4. User space(用户空间) 与 Kernel space(内核空间)

    出处: User space 与 Kernel space (整理)用户空间_内核空间以及内存映射 学习 Linux 时,经常可以看到两个词:User space(用户空间)和 Kernel spac ...

  5. ajax 跨域要点

    1.async: false 2.dataType: jsonp 3.返回数据格式.正常格式为{ param1: p1, param2: p2 },而jsonp跨域请求时,多了一个参数 callbac ...

  6. k8s之RBAC-基于角色的访问控制

    一个在名称空间内的对象的完整url模板: Object_URL: /apis/<GROUP>/<VERSION>/namespaces/<NAMESPACE_NAME&g ...

  7. 怎样理解document的快捷方式属性

    所谓 "快捷方式属性" , 也就是说它们不是必须的, 只是在操作dom时可以更为方便地获取. 主要有下面8个: 1. 获取当前文档所属的window对象: document.def ...

  8. 使用.Net Core 2.2创建windows服务

    使用.Net Core 2.2创建windows服务 我的环境 win 10 home Visual Studio 2019 v16.1.3 安装有.net core 2.2 创建项目 编辑项目文件 ...

  9. gperftools源码分析和项目应用 - CPU Profiler

    gperftools源码分析和项目应用 - CPU Profiler 原文:https://blog.csdn.net/yubo112002/article/details/81076821 原文链接 ...

  10. vue项目在IE浏览器和360兼容模式下页面不显示问题,亲测有效

    解决方法:安装 "babel-polyfill" 1.命令:cnpm install --save-dev babel-polyfill 2.在入口main.js文件引入:impo ...