C++开发人脸性别识别教程(1)——前瞻

2024-08-28 18:18

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

  大四暑假的时候,帮老师指导了一个本科大学生创新实验,主要目标是通过图像处理相关技术对人脸美丽度进行分类。其中一个很重要的环节就是人脸的性别识别,这里将这个部分单独拿出来,借住OpenCv这个开源的图像处理库,在MFC框架下编写了一个人脸性别识别的程序,本套教程将详细介绍编写过程。

  需要提前说的一点是这个程序是在大四的时候编写的,当时自己还没有正式的进行图像处理方面的研究,编程经验也不够丰富,因此程序只用了OpenCv提供的较为经典的人脸检测和人脸识别算法,在准确度、程序设计、异常机制处理上可能显得不够完善。在制作这套教程之前我并没有刻意去完善它,一是想好好审视下自己两年前的编程水平,二是保持程序的简洁性,使广大读者更容易看懂。教程编写完成后,我会再花些时间来完善自己当年这个处女作。

  一、程序效果演示

  首先给出程序的最终效果:


  从图中可以看出程序一共分为如下几个模块:方法选择、误差补偿及初始化模块;视频性别识别模块;图像性别识别模块;辅助功能;图片显示区域;结果显示区域。

  二、功能介绍

  1、方法选择、误差补偿及初始化模块

  这里一共有三个控件:初始化按钮,方法选择复选框,误差补偿值。初始化按钮与初始化事件相关联,主要是加载相关分类器(会在后面教程中详细介绍),这里的分类器主要包含一个人脸检测分类器以及三个性别识别分类器。单击初始化按钮,初始化完成后程序会给出对应提示:

  注意如果用户在尚未进行初始化的情况下进行其他操作,程序会弹出对话框提示用户先进行初始化:

  紧接着是方法选择列表,这里面提供了四种人脸性别识别的方法供用户选择,分别是PCA变换、Fisher变换、LBP变换、支持向量机:

  然后是误差补偿模块,用来补偿程序存在的一些固定误差,主要用在视频性别识别中,会在以后的教程中详细介绍。这里同样以一个列表控件的形式供用户选择:

  2、视频性别识别模块

  这个模块主要实现视频信号的性别识别,默认由摄像头采集视频。主要包含两个按钮,一个是开始按钮“打开视频”,另一个是暂停按钮。功能很简单,单击“打开视频”按钮,程序会自动检测当前设备上所安装的摄像头,并调用指定摄像头采集视屏,同时对视频进行人脸检测、性别识别,在图片显示区域显示实时的人脸检测结果,在结果显示区域显示性别识别结果。

  这里注意的是模块中的暂停按钮具有复用功能。因为这个程序具有两个功能,对摄像头视频进行性别识别以及对单张图片进行性别识别。当程序在处理视频是,这个按钮的功能是暂停/恢复当前视频;在对单张图片进行性别识别时,这个按钮的功能是自动读取文件夹下的下一张图片。在视频处理时按钮的状态为:

  在识别单张图片时按钮的状态为:

  3、单张图像性别识别模块

  这里同样包含两个按钮,一个“图片文件夹”按钮(这个按钮同样具有复用功能),一个静态文本框区域,注意着两个控件是相互关联的。在对图片进行性别识别时,程序提供了两个工作模式:

  模式一:选定一个文件夹,通过视频性别识别模块中的“下一张”按钮自动加载文件夹下所有图片,无需重复选择。

  模式二:直接选择一个图片文件进行操作。

  程序初始默认为模式一,即文件夹模式。此时单击模块中的“图像文件夹”按钮,将会弹出对话框,提示我们选择一个文件夹:

  我们在“双击此处转换模式”的静态文本框区域双击鼠标,将会切换到模式二:

  此时按钮的文本变为“图片文件”,单击会打开一个对话框要求用户具体选择一张图片来进行处理:

  注意这里两个模式下所弹出的文件对话框是不同的。再次双击可切换回原来的模式。

  4、辅助功能模块

  这部分模块中主要包含三个按钮:人脸批量分割、文件名修改、方法验证。

  这些都是我在编写程序的过程中用到的一些辅助性功能。单击“人脸批量分割”按钮,会弹出一个文件选择对话框,提示用户选择一个文件夹,然后程序会自动检测文件夹下的所有图片文件,对其进行人脸检测,并将检测到的人脸区域图片批量保存到程序制定路径下。同样,如果单击“文件名修改”按钮,同样会弹出一个对话框,提示用户选择文件夹,然后程序会对所有图片的名称按照指定格式进行统一修改,并保存。至于“方法验证”按钮,是一个测试按钮,主要是在开发程序的过程中用作调试按钮。

  5、图片显示区域和结果显示区域

  主要由一个picture控件和三个编辑框组成,用来显示当前的图像信息以及识别结果。其中“男/女识别率”这两个控件是用来在仿真试验中测试识别方法的效果的,将会在后续章节进行详细介绍。

  三、小结

  本篇教程主要介绍了程序的最终效果,让大家对本教程的最终目的有一个大致的了解。最后再次强调,这个程序是我本科阶段编写的,肯定会有很多不足之处,在处理图像时也用的都是经典算法。如果你希望从教程中了解人脸检测、人脸识别等方面最前沿的算法,那这篇教程可能会让你失望。但如果你希望了解MFC的入门级编程方法、图像处理的基本知识以及OpenCv的基本应用,相信你能从这套教程中学到一些东西。

 

 

        

 

这篇关于C++开发人脸性别识别教程(1)——前瞻的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

python库fire使用教程

《python库fire使用教程》本文主要介绍了python库fire使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1.简介2. fire安装3. fire使用示例1.简介目前python命令行解析库用过的有:ar