OpenCv是C++图像处理的重要工具。这个人脸性别识别的项目就是借助OpenCv进行开发的。

尽管网上已经有了非常多关于OpenCv的配置教程,但出于教程完整性考虑。这里还是用专门的一篇博客来介绍OpenCv的详细配置方法,同一时候也介绍一下OpenCv中的一个强有力的图像处理插件——ImageWatch。

  因为这个程序是一年前写的。当时的OpenCv的最新版本号为2.4.9(如今已经更新到了3.0),而且2.4.9版本号和3.0版本号在配置方法上稍有不同,这里我仍以2.4.9版本号为例来介绍配置方法,有关3.0的新特性以及配置方法大家能够參考网络资源。

  一、OpenCv的下载安装

  首先,给出OpenCv的官方下载地址:OpenCv下载

  下载完毕后,得到一个大约300M左右的exe文件:

  双击进行開始安装,输入安装位置。单击Extractbutton:

  安装过程实质上就是一个解压缩的过程:

  安装完毕后存在两个文件夹:build和source。Build文件夹下主要存放了相关的库文件。也就是OpenCv的主体部分。Source文件夹下主要存放了一些帮助文档和官方提供的资源(比如已经训练好的分类器等):

  二、配置路径

  下载安装完毕之后, 启动VS2012。随意打开一个项目。我们这里新建一个空的Win32控制台应用程序。

在当中调用OpenCv:

  这里用红色下划线标记了#include语句,说明当前尚未进行OpenCv配置。OK,接下来開始配置。

  1、配置VS路径

  单击“项目—>属性”,打开属性对话框:

  在“配置属性—>VC++文件夹”节点下,单击“包括文件夹”右側的下来button:

  选择OpenCv文件夹下的include文件夹路径:

  同理。在“库文件夹”中加入lib文件夹路径:

  这里有两点须要说明:

  (1)X64。在build目录下有两个文件X86和X64,X86是针对32位windows系统的,X64是针对64位系统的。因为我的电脑是64位win7,所以理所当然选择了X64,只是须要说明的一点是64位系统下相同能够使用X86下的文件。仅仅要将调试器设置为win32就可以。

  (2)VC11。

在X86和X64目录下分别都有三个目录:V10、V11、V12。当中V10适用于VS2010,V11使用于VS2012,V12适用于VS2013(当时还未公布VS20150)。我们这里选择VS11目录。

  接下来在“配置属性—>链接器—>输入”节点下,在“附加依赖项”窗体中输入下面OpenCv库文件名:

  opencv_calib3d249d.lib

  opencv_core249d.lib

  opencv_features2d249d.lib

  opencv_flann249d.lib

  opencv_gpu249d.lib

  opencv_highgui249d.lib

  opencv_imgproc249d.lib

  opencv_legacy249d.lib

  opencv_ml249d.lib

  opencv_objdetect249d.lib

  opencv_ts249d.lib

  opencv_video249d.lib

  opencv_contrib249d.lib

  opencv_nonfree249d.lib

  单击应用。关闭设置窗体。

  2、配置环境变量

  Windows系统的环境变量差点儿是全部编程软件必须折腾的地方,由于编译器在启动时都会通过环境变量来自己主动读取搜索路径。

  至于怎样打开环境变量窗体这里就不再赘述,这里须要将OpenCv的bin(可运行文件)文件夹的路径“”加入到环境变量中:

  配置完毕后,重新启动VS,再次输入include命令,发如今VS给出的提示列表中出现了“OpenCv2”这一项,初步认定配置完毕:

  接下来我们编写一个小程序来測试OpenCv:读取F盘根文件夹下的一张彩色图片。灰度化,然后显示,代码如图:

  按下F7进行编译,程序报错。类型为“error LNK2019: 无法解析的外部符号……”。

这是由于程序默认使用了32位的Debug调试器,而我们配置的是64位的opencv,因此须要使用64位的Debug调试器。单击工具栏“win32”相应的下拉菜单,选择配置管理器:

  在弹出的窗体中单击“Win32”下拉button,选择“新建”:

  新建平台选择X64:

  单击确定。关闭设置对话框,此时我们已经创建了一个64位的Debug调试器,接下来在调试器栏选择这个64位调试器就可以:

  再次按下F7,编译成功。F5,调试成功。

Ctrl+F5,程序顺利执行,显示图片。

  三、ImageWatch插件

  接下来介绍OpenCv的一个强力的VS辅助插件:ImageWatch。

  1、外观

  首先强调一点,ImageWatch必须在调试过程中才干起作用,要想使用ImageWatch对应的就要给程序设置一些断点来使程序暂停。首先。给出ImageWatch的外观:

  可以看出,ImageWatch可以实时的显示出当前程序中的图片(确切的说是Mat矩阵)信息,包含尺寸、像素、外观等等。着无疑给程序的调试带来了相当的大的便利。

接下来我们具体介绍一下这个插件的功能。

  2、ImageWatch插件安装

  首先。给出一篇我之前写的关于ImageWatch插件教程:ImageWatch教程

  ImageWatch官方帮助文档:帮助文档

  ImageWatch下载地址:下载地址

  下载完毕后,双击安装就可以。安装过程中会自己主动识别当前已安装的编译器,选择VS2012就可以。

  安装完毕后,须要手动启用这个插件。打开VS,单击“视图—>其它窗体—>ImageWatch”:

  此时再次设置断点,F5调试。ImageWatch正常工作。

接下来我们介绍它的几个经常使用功能。

  3、经常使用功能

  (1)图片查看

  可以实时显示当前图片的状态。缩略图等,这点不必多说:

  (2)查看像素信息

  将鼠标放在右側预览窗体。上方标题栏会实时显示当前鼠标指针所在像素的位置坐标以及像素值、缩放比例(从左往右依次是坐标值和像素值、缩放比例):

  在预览窗体中按下“Ctrl+鼠标滚轮”,会对图片进行放大和缩小。直至放大到能够看清像素值(彩色图像由三个值,RGB):

  4、保存图片

  ImageWatch能够方便的将当前的图片保存下来。仅仅需在相应图标上单击右键。在快捷菜单中选择“Dump to File”就可以:

  ImageWatch还有很多其它功能。比如图像的关联显示等等,具体功能请大家參加之前提供的博客以及官方帮助文档,这里就不再赘述。

  四、总结

  这是本套教程准备部分的最后一篇文档,在接下里的博客中我们将開始编写代码。

这里说几个须要注意的事项:

  (1)OpenCv还是建议大家用新版。OpenCv的发展经历了1.x、2.x,到现在的3.0版。

1.x版本号的OpenCv仅仅提供了C语言的接口。当中的全部的API函数都以“cv”开头,仅仅有结构体,没有类结构,用Iplimage指针类型表示图像等等。

不等不说,OpenCv的发展趋于完好。2.4系列版本号是公认的成熟版本号。只是前两天我在浏览OpenCv官网的时候发现在3.0版本号中出现了非常多比較新的算法,比如DeepLearning。因此建议搞图像处理算法的同行们还是去尝试使用一下3.0版本号吧。

  (2)写教程要多用图。

这段话可能说得让大家有些莫名其妙,但我认为有必要拿出来说一说。曾经我写教程时大多长话连篇、恨不得连代码都想用语言叙述出来,后来我在翻译《最全Pycharm教程》的过程中,深深体会到了图文并茂的重要性,也深深的体会到了歪果仁在编程、叙事方面的严谨。

所以我也吸取了经验,用图说话,于是你就看到了这篇不到2500字。但有着23张图的文章,以后的文章也是这样。不知道大家是否能适应哈。

C++开发人脸性别识别教程(3)——OpenCv配置和ImageWatch插件介绍的更多相关文章

  1. C++开发人脸性别识别教程(12)——加入性别识别功能

    经过之前几篇博客的解说,我们已经成功搭建了MFC应用框架,并实现了主要的图像显示和人脸检測程序,在这篇博文中我们要向当中加入性别识别代码. 关于性别识别,之前已经专门拿出两篇博客的篇幅来进行解说.这里 ...

  2. C++开发人脸性别识别教程(10)——加入图片的人脸检測程序

    现在我们的MFC框架已经初具规模,能够读取并显示目录下的图片.在这篇博文中我们将向当中加入人脸检測的程序. 一.人脸检測算法 这里我们使用OpenCv封装的Adaboost方法来进行人脸检測,參见:C ...

  3. C++开发人脸性别识别教程(19)——界面美化

    在这篇博文中将完毕<C++开发人脸性别识别>的收尾工作.主要内容分为两部分:加入视频暂定功能.界面规范化. 一 视频暂停功能 严格来说这个视频暂定功能算是视频人脸性别识别的一个遗留问题,本 ...

  4. C++开发人脸性别识别教程(16)——视频人脸性别识别

    在之前的博文中我们已经可以顺利驱动摄像头来採集源图像.在这篇博文中将正式为其加入性别识别的代码,实现摄像头视频的人脸性别识别. 一.人脸检測 在得到摄像头採集的源图像之后,首先要做的就是对其进行人脸检 ...

  5. C++开发人脸性别识别教程(5)——通过FaceRecognizer类实现性别识别

    在之前的博客中已经攻克了人脸检測的问题,我们计划在这篇博客中介绍人脸识别.性别识别方面的相关实现方法. 事实上性别识别和人脸识别本质上是相似的,由于这里仅仅是一个简单的MFC开发,主要工作并不在算法研 ...

  6. C++开发人脸性别识别教程(7)——搭建MFC框架之界面绘制

    在之前的博客中我们已经将项目中用到的算法表述完成,包含人脸检測算法以及四种性别识别算法,在这篇博客中我们将着手搭建主要的MFC框架. 一.框架概况 在这篇博文中我们将搭建最主要的MFC框架.绘制MFC ...

  7. C++开发人脸性别识别教程(8)——搭建MFC框架之读取目录信息

    在上一篇博客中我们已经绘制了MFC界面,在这篇博客中我们将加入响应代码,为MFC框架加入一个最主要的功能:打开一个目录. 一.加入相关头文件 这里头文件主要包括三类:opencv头文件.批量读取文件相 ...

  8. C++开发人脸性别识别教程(9)——搭建MFC框架之显示图片

    在之前的博客中我们已经实现读取用户选定的目录.并将其路径保存在对应的变量中.在这篇博文中我们将介绍怎样借助CvvImage类将图片显示在picture控件中,并自己主动读取目录下的其它图片. 一.加入 ...

  9. C++开发人脸性别识别教程(6)——通过SVM实现性别识别

    http://blog.csdn.net/u013088062/article/details/50480518

随机推荐

  1. js实现点击复制网页内容(基于execCommand)

    通过execCommand方法来实现,当一个HTML文档切换到设计模式 designMode时,文档对象暴露 execCommand 方法,该方法允许运行命令来操纵可编辑区域的内容.大多数命令影响文档 ...

  2. Qt之qInstallMessageHandler(输出详细日志)

    简述 安装之前已定义的消息处理程序,返回一个指向前一个消息处理程序. 消息处理程序是一个函数,用于打印调试信息.警告信息.严重错误和致命的错误的消息.Qt库(debug模式)包含成百上千的警告信息打印 ...

  3. Linux内核中进程上下文和中断上下文的理解

    參考: http://www.embedu.org/Column/Column240.htm http://www.cnblogs.com/Anker/p/3269106.html 首先明白一个概念: ...

  4. cocos2d-x 移植到android中编译的一些问题:fatal error: Box2D/Box2D.h: No such file or directory&quot;

    1.fatal error: Box2D/Box2D.h: No such file or directory" 须要加入box2d库的支持,改动android.mk文件,例如以下: 查看文 ...

  5. ThinkPHP5.0框架开发--第8章 TP5.0 模型

    ThinkPHP5.0框架开发--第8章 TP5.0 模型 第8章 TP5.0 模型 ================================================= 今日学习 1. ...

  6. CSS3个人盲点总结【总结中..........】

    ~:表示同辈元素之后指定类型的元素,如;elm1 ~ elm2表示,elm1之后的所有elm2元素,且elm1与elm2都是在同一个父级元素. +:表示同辈元素的兄弟元素. \A:一个空白换行符 &l ...

  7. Java Swing 托盘闪烁Demo实例

    桌面程序当中,托盘显示是一个常用的功能. C#的WinForm程序要实现托盘是挺轻松的,而Java Swing要实现这个功能虽然也不难, 但是由于Java Swing开发者或许没有C#多,所以看到很多 ...

  8. R和中心度、中心势

    最近用R画论文里的弦图,恰好借的书里着重写了中心度等问题. 网上流行一套密歇根大学社交计算的教程.但是前两年看了好几遍总是搞不清,即便是记公式也是收效不大.不妨按照书上总结一下. 绝对法: 无向图点度 ...

  9. 51nod 1785 数据流中的算法 (方差计算公式)

    1785 数据流中的算法 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 20 难度:3级算法题   51nod近日上线了用户满意度检测工具,使用高级人工智能算法,通过用户访问时间.鼠 ...

  10. sqluldr2linux64.bin的使用

    使用sqluldr2linux64.bin的前提是已经安装了Oracle数据库,sqluldr2linux64.bin和Oracle在同一台主机上使用,使用之前需要赋予可执行权限: [root@nod ...