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

相关文章

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

2025版mysql8.0.41 winx64 手动安装详细教程

《2025版mysql8.0.41winx64手动安装详细教程》本文指导Windows系统下MySQL安装配置,包含解压、设置环境变量、my.ini配置、初始化密码获取、服务安装与手动启动等步骤,... 目录一、下载安装包二、配置环境变量三、安装配置四、启动 mysql 服务,修改密码一、下载安装包安装地

Redis MCP 安装与配置指南

《RedisMCP安装与配置指南》本文将详细介绍如何安装和配置RedisMCP,包括快速启动、源码安装、Docker安装、以及相关的配置参数和环境变量设置,感兴趣的朋友一起看看吧... 目录一、Redis MCP 简介二、安www.chinasem.cn装 Redis MCP 服务2.1 快速启动(推荐)2.

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4