APP下载

基于Python的脸部皮肤健康度检测系统设计与实现

2020-02-02李震

电子技术与软件工程 2020年18期
关键词:跨平台脸部美白

李震

(广东食品药品职业学院 广东省广州市 510520)

1 引言

随着健康生活观念的日渐深入人心,人们对皮肤健康需求越来越高,特别是脸部皮肤的对于个人形象有至关重要的地位。但是人们比较缺乏对自己皮肤健康程度的量化认知,对皮肤每天的变化确认精确的判断标准。通过设计一个操作简单的人体皮肤健康度检测系统,有助于让用户了解自己皮肤的健康程度,进而有针对性的进行皮肤护理操作,情况严重的可以提示用户进一步到医院进行针对性的治疗。[1]

2 主要开发技术

Python 是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。其具有开源、跨平台等特点,数据处理速度快、功能强大且易快速搭建开发平台,具有海量扩展模块,方便开发者快速开发应用。[2]

OpenCV 是一个基于BSD 许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android 和Mac OS 操作系统上。它用C++语言编写,它具有C ++,Python,Java 和MATLAB 接口,并支持Windows,Linux,Android 和Mac OS,OpenCV 主要倾向于实时视觉应用,具有强大的图形图像处理功能。[3]

dlib 是一个用C++编写的,已经封装好API 接口的第三方库,导入Python 程序后,可以实现人脸识别、机器学习和图形图像处理的功能强大第三方库。在人体皮肤健康度检测系统实现上,主要完成图片的人脸部分的识别和定位,给出Rect 数据,方便功能函数的后续处理。[4]

Qt 也是由C++编写开发的图形库,是完全面向对象的完整跨平台软件开发框架,其相比MFC 有许多优点,特别是命名方面保持了和功能的一致性,提高调用方式的连贯性和逻辑性,大大提高了开发的便利性和稳定性。[5]

PyCharm 是由JetBrains 打造的一款Python IDE 开发编辑软件。具备完整IDE 的功能,比如,调试、语法高亮、Project 管理、代码跳转、智能提示、自动完成、单元测试、版本控制等,同时JetBrains 还友好的提供了免费的community 版本。利用强大的Pycharm 构建Python IDE 开发环境,扩展人脸识别库dlib 和界面UI 库Qt,融入自行开发的皮肤健康度评分算法,实现了人体皮肤健康度检测系统。[6]

3 系统整体设计

为了降低开发难度,将系统设计为单机版的应用程序,由于Python 的跨平台属性,开发出的程序可以分别打包成适合windows、linux 和ios 甚至安卓平台的可执行文件,使得系统即使为单机版也具有较好的通用性。

3.1 功能分析

考虑到现代女性对健康和美的追求,人体皮肤健康度检测系统包含皮肤评价功能,美白功能,磨皮功能,亮眼功能,红唇功能。

皮肤评价功能是根据皮肤的肤色状况,亮度和瑕疵等情况,进行综合评分,得到脸部的健康水平。

图1:程序的整体结构图

图2:MainWindow 界面的布局结构

图3:项目解释器第三方包的版本配置

美白功能,是让用户设置合适参数,可以看到自己不同美白程度下的脸部效果,让用户自行增强美白参数,来比较自己美白后与美白前的颜值差别。

磨皮功能,可以提高脸部皮肤的光泽层度,适当降低脸部的痣和雀斑等瑕疵对脸部的美观影响。

亮眼功能,是提高眼部的对比度和亮度,让眼部看起来更有神采,提高用户脸部的整体美颜效果。

图4:脸部皮肤健康度检测系统最终实现效果

红唇功能,是提高用户唇部的色彩饱和度,让唇部看起来更加饱满和性感。

3.2 结构设计

每一个功能都设计了对应的槽函数来完成对应任务,程序的结构如图1所示。

4 系统实现

4.1 界面结构

界面主要由一个MainWindow 组成,利用PyCharm 的Qt Designer 工具生成了UI 界面的代码,储存在了FaceBeautyGUI.py 文件中,界面结构生成了一个水平布局管理器verticalLayout,在Mainwindow 右侧嵌套了一个8 行3 列的网格布局管理器gridLayout,完成了界面的构建,如图2所示。

4.2 开发环境配置

系统使用的开发环境是PyCharm 2020.1,安装了PyQt5 和dlib,OpenCV 等第三方库,具体版本配置情况如图3。

4.3 具体实现

4.3.1 文件输入输出

打开文件的实现利用了QT5 自带的QFileDialog.getOpenFileName 函数来获得有效文件路径。简要实现代码如下:

4.3.2 图像处理

脸部皮肤图像的处理主要包含四个功能:美白、磨皮、亮眼和红唇。这里实现的代码比较多,在系统开发上,设计了四个函数实现了对应功能,分别为whiten,smooth,sharpen,brighten。

4.3.3 皮肤评价

对皮肤的健康度评价,设计了skin_evaluation 函数来实现皮肤的评价,主要采用了基于HSV 颜色空间H,S,V 范围筛选法,据资料显示,正常黄种人的H 分量大约在7 至20 之间,S 分量大约在28 至256 之间,V 分量大约在50 至256 之间。根据识别到的健康皮肤区域占全部皮肤区域的权重比值,得到最终的皮肤健康度评价分数。[7]

4.3.4 图像显示

将处理好的图像数据显示在MainWindow 上,首先涉及到了图片格式的转换,代码如下:

中间数据存储额功能上,由于在对图片的操作上,会产生撤销上一步的操作,这里设计了self.temp_bgr[:]来保存中间数据,self.im_ori[:]来保存原始图片数据,可以完成撤销和恢复图片等操作。

最后使用Label 控件,调用Label.setPixmap()函数完成图像的显示。最终,程序实现效果如图4。

5 结语

本文介绍了一个基于Python的脸部皮肤健康度评价系统的设计与实现过程,所设计的程序简单易用,具有多平台通用特性,通过简单的移植也能适配到对应型号的手机移动平台上。通过对自己脸部拍照,使用该程序检测,用户可以简单直观的得到自己脸部皮肤的基本健康状况,并辅助判断是否需要就医,提高用户对自己脸部皮肤的健康程度掌握情况,缓解爱美人士对自身无谓的焦虑情况,具有较好的推广应用前景。后期,可以增加个人健康数据库,通过每天记录用户的皮肤健康图片分析数据,绘制用户的脸部皮肤健康曲线,获得更大的应用推广价值。

猜你喜欢

跨平台脸部美白
脸部美容须知
修护美白
跨平台APEX接口组件的设计与实现
Beyond冷光美白对四环素牙和氟斑牙的美白效果比较
不再惧怕阳光
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究
美白乳液,要亮白也要保湿
3D打印技术助英男子重获完整脸部