近期项目需要用到OpenCV中的几个函数,但其函数无法全部实现自己需要的功能,故而需要改进部分函数,为安全及效率起见,想参考OpenCV的源码来改进,这样节省时间的同时亦可提供代码的鲁棒性和通用性。那么如何查看OpenCV的源代码?在VS2010环境下,使用“Go to Definition”显然不能满足要求(OpenCV已被编译成LIB及DLL文件供调用),简单搜索了一下,得知可CMake导出OpenCV源码生成VC++项目,进入可查看源码,下面一步一步来达到此目的。

一、下载并安装CMake

CMake 是个开源的跨平台自动化建构系统,在下载页面上可下载源码及二进制可执行程序,我们只需要下载安装包即可,我的PC系统是Windows 7(32bit),所以我下载cmake-2.8.12.1-win32-x86.zip

下载完成后,解压到/cmake-2.8.12.1-win32-x86文件夹下,进入./bin目录,双击“cmake-gui.exe”启动CMake。

二、使用CMake生成VC++项目

1.  打开CMake后,界面如下图所示

2.  填入相关信息

如上图所示,①点击“Where is the source code”后面的那个“Browse Source...”按钮,选择OpenCV源文件的安装路径;②点击“Where to build the binaries”后面的那个“Browse Build...”按钮,选择CMake生成的工程文件所在的路径;③点击“Configure”转下一步。

3.  点击“Configure”按钮,配置编译平台

如笔者的机器上安装的是VS2010,因此,就选择Visual Studio 2010。

4.  点击Finish按钮,开始配置

界面上显示出现了错误,查看错误原因得知“Could not register CMake's Visual Studio macros file 'CMakeVSMacros2.vsmacros' while Visual Studio is running. Please exit all running instances of Visual Studio before continuing.CMake needs to register Visual Studio macros when its macros file is updated or when it detects that its current macros file is no longer registered with Visual Studio.”

百度一下,原来是因为VS2010相关路径设置里面包含了中文等相关字符,可参看解决CMake为VC准备生成文件时的Could not copy from不能复制问题中的解决方案,修改路径名为全英文的。

修改好后,再次点击Configure,这次成功了,如下所示:

默认有的复选框没有选择,最好不要选择,因为库可能不全,从而导致生成失败,默认就好了。

5. 点击“Generate”按钮,进行生成。

如上所示,最下面的消息框中显示配置完成,生成也完成了。

我们转到生成目录(…/OpenCV2.4.8VS2010),如下所示:

OpenCV.sln便是我们需要的解决方案文件。至此,全部结束。

使用CMake生成VS2010项目查看OpenCV源代码的更多相关文章

  1. 使用CMake生成sln项目和VS工程遇到的问题

    用vs运行cmake后的工程 参考:http://zhidao.baidu.com/link?url=AZRxI0jGDzo6Pikk68qylee0g7leXbpbZGiVuyiijWbd8scUK ...

  2. CMake生成VS2010工程相对路径和绝对路径问题说明

    CMake生成VS2010工程相对路径和绝对路径问题说明 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 主要是使用CMake生成的VS2010的工程,最好不 ...

  3. cocos2d-2.0-x-2.0.4生成vs2010项目模板的解决方法

    cocos2d教学书籍还有网上好多博主都说仅仅要执行一下install-templates-msvc.bat这个批处理文件即可了.但是我按了半天vs2010就是不出现令小伙伴惊喜的cocos2d wi ...

  4. 利用CMake和OpenCV源代码生成Visual Studio工程

    OpenCV1.0版本有windows,linux之分,笔者曾经一直使用Opencv1.0.这个版本在下载,安装之后,在 \OpenCV\_make文件夹下面已经存在了一个opencv.dsw的工程文 ...

  5. opencv学习_15 (利用cmake查看opencv的源码)

    当我们有时想查看opencv自带的函数的源代码,比如函数cvCreateImage, 此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCr ...

  6. 利用cmake查看opencv的源码

    当我们有时想查看opencv自带的函数的源代码,比如函数cvCreateImage, 此时我们选中cvCreateImage, 点击鼠标右键->转到定义,我们会很惊讶的发现为什么只看到了cvCr ...

  7. 如何查看OpenCv的源代码

    需要移植部分opencv的算法,不得不查看opencv的原始代码. 在一般的代码调试中一般只能看到一些opencv的函数声明和定义,看不到内部执行过程,需要利用 CMake导出opencv 源码,生成 ...

  8. CMake生成OpenCV解决方案&&编译OpenCV源码

    生成OpenCV工程需要用到CMake,所以第一步需要下载CMake软件,下载链接:CMake下载 目前最新的版本是3.7.1,这里选择下载Platform下的Windows win32-x86 ZI ...

  9. 学习 opencv---(6)玩转opencv源代码:生成opencv 工程解决方案与opencv 源码编译

    在这篇中,我们探讨如何通过已安装的opencv选择不同的编译器类型,生成高度还原的OpenCV开发时的解决方案工程文件,欣赏OpenCV新版本中总计 六十六多万行的精妙源代码.我们可以对其源代码进行再 ...

随机推荐

  1. Ubuntu12.04安装 vsftpd

    Ubuntu12.04 FTP 的配置   ubuntu安装ftp服务器 1: 安装vsftpd ~$ sudo apt-get install vsftpd 2: 配置vsftpd 2.1 修改vs ...

  2. hdu1062

    #include<stdio.h> #include<string.h> int main() { int i,n,len,j,k,t; char s1]; scanf(&qu ...

  3. Java之Spring Boot详解(非原创)

    文章大纲 一.Spring Boot 概述二.Spring Boot 入门案例三.Spring Boot核心功能代码实战四.项目源码与资料下载五.参考文章   一.Spring Boot 概述 1. ...

  4. PS2018学习笔记(30-35节)

    30-35:万能的钢笔-制图抠图必学-part(1-6) # 本节知识点: 钢笔工具 贝塞尔曲线 绘图方式 光标状态认识 路径 形状 形状工具 矢量蒙版 # 本节段落表: 钢笔工具知识 直线绘制知识 ...

  5. 清北刷题冲刺 10-28 a.m

    立方数 (cubic) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK定义了一个数叫“立方数”,若一个数可以被写作是一个正整数的3次方,则这个数就是立方 ...

  6. 洛谷P3078 [USACO13MAR]扑克牌型Poker Hands

    题目描述 Bessie and her friends are playing a unique version of poker involving a deck with \(N\) (\(1 \ ...

  7. Windows平台Anaconda使用笔记

    1.官网下载anaconda安装. 2.将命令行工具路径加入系统环境变量 C:\ProgramData\Anaconda3\ScriptsC:\ProgramData\Anaconda3\Librar ...

  8. ELK系列(5) - Logstash怎么分割字符串并添加新的字段到Elasticsearch

    问题 有时候我们想要在Logstash里对收集到的日志等信息进行分割,并且将分割后的字符作为新的字符来index到Elasticsearch里.假定需求如下: Logstash收集到的日志字段mess ...

  9. Exadata Adaptive Scrubbing Schedule

    1.为什么要引入"Hard Disk Scrub and Repair"特性 在exadata的11.2.3.3.0版本中,开始引进了"Automatic Hard Di ...

  10. Mockito测试 注解

    import static org.mockito.Mockito.*;import static org.junit.Assert.*; import org.springframework.tes ...