C++开发人脸性别识别教程(3)——OpenCv配置和ImageWatch插件介绍

本文主要是介绍C++开发人脸性别识别教程(3)——OpenCv配置和ImageWatch插件介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  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文件:

 

  双击进行开始安装,输入安装位置,单击Extract按钮:

 

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

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

 

  二、配置路径

  下载安装完成之后, 启动VS2012,任意打开一个项目。我们这里新建一个空的Win32控制台应用程序。在其中调用OpenCv:

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

  1、配置VS路径

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

 

  在“配置属性—>VC++目录”节点下,单击“包含目录”右侧的下来按钮:

 

  选择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”下拉按钮,选择“新建”:

  新建平台选择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插件介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115521

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数