生成OpenCV工程需要用到CMake,所以第一步需要下载CMake软件,下载链接:CMake下载

目前最新的版本是3.7.1,这里选择下载Platform下的Windows win32-x86 ZIP,大小21M:

把下载完成的压缩包解压出来就可以了,不用安装。打开解压后的路径下…\cmake-3.7.1-win32-x86\bin\cmake-gui.exe,会弹出如下CMake窗口:

接下来就可以安装步骤一步一步生成OpenCV工程了。

1.  点击右侧“Browse Source”按钮输入OpenCV源码所在路径:

2. 点击右侧“Browse  Build”输入生成的OpenCV工程存放目录:

3. 点击左下角“Configure”按钮生成工程:

点击之后弹出如下对话框,CMake会自动选择本机已经安装的目标编译器,一般情况下默认即可,单击“Finish”:

如果不幸中招了,错选了本机没有的编译器,则会生成失败。要更改默认的目标编译器,点击CMake左上角的File->Delete Cache ,就会把之前选择的清除掉再重新选择。

如果选择的编译器没错,点击“Finish”后就会执行生成:

大概需要2分钟,生成完成:

4. 第一次“Configure”生成之后,还需要第二次执行生成,再次单击“Configure”按钮,执行第二次生成:

第二次生成完成:

5. 经过两次“Configure”之后,点击“Generate”按钮生成最终的OpenCv解决方案:

出现“Generate done”表示生成完成:

经过以上5个步骤之后就可以去刚才选择的OpenCV工程存放目录下查看生成的项目,我这里是在D:\Software\MyOpenCV 下:

双击打开工程OpenCV.sln,一共有71个项目,我们用的所有的OpenCV函数都是由这个工程生成的,可以在这些项目 里找到所有OpenCV函数的原始实现,按F5编译工程:

编译成功之后会在工程目录bin->Debug下生成很多个dll动态库文件。如果没对OpenCV工程源码修改的话,这些dll文件跟OpenCV自带的dll文件是一样的,如果要对指定的OpenCV函数进行优化或者功能上的剪切,在更改源码之后编译生成dll文件,再去调用这些dll文件就行了。

编译OpenCV源码

以最常见的imshow函数为例,找到opencv_highgui项目里的window.cpp文件里的imshow函数实现,在函数开头加一句话“2017新年快乐!”,并在控制台输出(需要加头文件iostream):

之后右键opencv_highgui项目->生成,把bin->Debug文件夹下的opencv_highgui2413d.dll替换掉之前OpenCV程序中的opencv_highgui2413d.dll文件。新建一个工程,测试一下imshow函数的效果:

#include <highgui/highgui.hpp>

using namespace cv;

int main()
{
Mat image = imread("Test.jpg");
imshow("Test", image);
waitKey();
return 0;
}

执行效果,在输出图片的同时,也在控制台输出了“2017新年快乐!”,说明对OpenCV函数源码的修改起作用了:

CMake生成OpenCV解决方案&&编译OpenCV源码的更多相关文章

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

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

  2. 用VC编译lua源码,生成lua语言的解释器和编译器

    用VC编译lua源码,生成lua语言的解释器和编译器 1.去网址下载源码 http://www.lua.org/download.html 2.装一个VC++,我用的是VC6.0 3.接下来我们开始编 ...

  3. ant编译solr源码生成eclipse项目,解决一直resolve,一直[ivy:retrieve]的问题

    这两天在学习solr,结果刚到编译solr源码就卡住了,足足卡了两天,网上找各种解决办法都是简单带过,说是缺少jar包,下载下来放到对应位置就好了....对应位置???咋不说这个问题用相应方法解决即可 ...

  4. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决

    昨晚在编译源码,make一段时间之后报错如下: # A fatal error has been detected by the Java Runtime Environment: # # SIGSE ...

  5. [Android Pro] 自己动手编译Android源码(超详细)

    cp from : https://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈andro ...

  6. Windows下编译live555源码

    Windos下编译live555源码 环境 Win7 64位 + VS2012 步骤 1)源码下载并解压 在官网上下载最新live555源码,并对其进行解压. 2)VS下建立工程项目 新建Win32项 ...

  7. 自己动手编译Android源码(超详细)

    http://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事. ...

  8. windows 平台使用 VS2017 编译 libevent 源码

    一 依赖库编译 先要将其依赖的库编译好,其中openssl需要编译到libevent中,编译成libevent_openssl.lib库,zlib在新版本中只有示例用到. 1)windows 平台使用 ...

  9. windows使用VS编译python源码

    使用VS2021编译python源码 说明,使用VS2019也是可以的. 环境准备 对于VS2019首要要安装必要的环境 到python官网下载源码压缩包以及解压(红色箭头任选一个都行) 打开下载好的 ...

随机推荐

  1. Ubuntu设置IP(VMware9.03)

    说明:在VMware上新安装Ubuntu11.04(64位) vi编辑器特难用,输入老出错,费了老大劲才把IP改好,IP改完之后最好立马重装一个编辑器vim. 设置静态IP: # vi /etc/ne ...

  2. 12.2 linux USB框架分析(详细注册match匹配过程)

     首先我们先来简单说一说USB的框架,之后在来具体分析源码,以便加深理解!其实USB的框架比较像“平台总线.设备.驱动”的框架,也分为总线.设备.驱动三大块.其中总线驱动是已经由内核完成的,一旦接入u ...

  3. SIP对话、事务详解

    1,SIP对话的建立(图片来自于网络) SIP对话的建立包括invite request,response,ACK.其中response包含临时响应(1XX response)和最终响应(非1XX r ...

  4. ArcGIS IQueryFilter接口

    樱木  原文IQueryFilter 1.IQueryFilter::SubFields (1)默认值为“*”,即查询时返回整行数据,如果只需要某一个字段数据(比如“Country”字段),则可以指定 ...

  5. 读取Webpage表中的内容 分类: H3_NUTCH 2015-02-10 14:59 418人阅读 评论(0) 收藏

    nutch将从网页中抓取到的信息放入hbase数据库中,默认情况下表名为$crawlId_webpage,但表中的内容以16进制进行表示,直接scan或者通过Java API进行读取均只能读取到16进 ...

  6. Emmet超详细教程

    Emmet超详细教程 一.总结 一句话总结:用的时候照着用,能提高效率. 1.快捷键如何使用? 需要敲代码的时候把快捷键放到旁边即可.照着敲. 二.Emmet超详细教程 Emmet的前身是大名鼎鼎的Z ...

  7. YUV与RGB格式转换

    YUV格式具有亮度信息和色彩信息分离的特点,但大多数图像处理操作都是基于RGB格式. 因此当要对图像进行后期处理显示时,需要把YUV格式转换成RGB格式. RGB与YUV的变换公式如下: YUV(25 ...

  8. 多线程之线程通信条件Condition二

    接上一篇,实现Condition三个条件,有这样一个应用: 1. 有三个进程,第一个进程运行1次,第二个进程运行2次,第三个进程运行3次: 2. 先运行第二个进程,然后第一个,然后第三个: 3.  依 ...

  9. hadoop2.7全然分布式集群搭建以及任务測试

    要想深入的学习hadoop数据分析技术,首要的任务是必需要将hadoop集群环境搭建起来,本文主要讲述怎样搭建一套hadoop全然分布式集群环境. 环境配置:2台64位的redhat6.5 +  1台 ...

  10. ArcGIS Engine中正确释放打开资源

    转自原文 ArcGIS Engine中正确释放打开资源 AE中对MDB,SDE等数据库操作时,打开后却往往不能及时释放资源,导致别人操作提示对象被锁定. 很多帖子说了很多原理,看的也烦且不实用,比如一 ...