2020-2021学年第1学期
**《计算机科学与应用(Python)》课程项目报告**
1. **选题**
2. 程序名称:
> **口红色号识别器**
1. 选题:
> **基于图像处理、人脸识别和Flask构建的图片口红色号识别及商品推荐系统**
1. 功能:
> **根据上传的图片自动化图像处理后分析脸部特征,并判断其嘴部妆容状态,依托现有大数据分析,识别其口红色号,并推荐相关商品,通过Flask服务器框架返回到网页前端并动态呈现**
1. **需求分析**
- *应用场景*
> 假设,圣诞前夕,*小姐姐*发来了一张美妆博主的美照,并暗示你,“人家也喜欢这个颜色。
> ”
> *这个时候,用我们的口红色号识别器,就能定位嘴唇,并迅速给出它的颜色隶属哪家品牌的哪个色号。*
- *需求分析*
> *现代社会,化妆是一样很常见且必要的技能,本程序可以依据现有的图片,提取其口红色号,匹配其化妆品的型号。*
1. **设计**
> **公开的后端接口:**
| **接口** | **调用方式** | **返回值** | **说明** |
|-----------------|-------------------------------------------|------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------|
| **/upload** | **[POST] \<str\>ImgData=图片二进制数据** | **\<JSON\> Path: 上传完成后的在服务端的文件名** | **将图片上传到后端,保存为文件后返回** |
| **/getLip** | **[POST] \<str\>Path=图片在服务端的路径** | **\<json\> state:状态,1代表成功,0代表失败fcolor:识别出来的嘴唇部分颜色 list:识别出来颜色对应口红的字典** | **获取已上传的某张图片的嘴唇部分的颜色并返回与其匹配的口红列表** |
| **/matchColor** | **[post] \<str\>Color=16进制颜色值** | **\<json\> state:状态,1代表成功,0代表失败list:与该颜色接近的口红的列表** | **根据给定的颜色值寻找在数据集中最相近的5款口红** |
> **内部模块接口**
| **接口** | **调用方式** | **返回值** | **说明** |
|-------------------------------------|---------------------------------------------|--------------------------------------------|----------------------------------------------------|
| **\@data. parseJSON** | **初始化时自动调用** | **无** | **将庞大的口红数据集转为python可以直接使用的list** |
| **\@data. getLipstickByID** | **Args: \<str\>ID:口红编号** | **\<Tuple\>** | **根据口红的编号取口红的数据** |
| **\@data. matchSimlarLipstick** | **Args: \<int\>Color:10进制颜色值** | **\<List\>** | **根据给定的颜色返回最接近的口红编号列表** |
| **\@data. matchSameColor** | **Args: \<int\>color:10进制颜色值** | **\<tuple\>** | **返回与给定颜色同色系的口红列表** |
| **\@data. matchSameBrand** | **Args: \<str\>brand;品牌** | **\<tuple\>** | **返回与给定品牌同品牌的口红列表** |
| **\@face.iface .init** | **Args: \<str\>Imgpath:欲处理的图片文件名** | **\<None\>** | **初始化一个自己编写的iface对象** |
| **\@face.iface .hasFace** | **直接调用,无参数** | **\<BOOL\> Ture/False** | **检测该对象的图片是否存在完整人脸** |
| **\@face.iface .findLips** | **直接调用,无参数** | **\<Tuple\> [0]:左顶点 [1]:宽度 [2]:高度** | **返回该对象图片中嘴唇所在的矩形区域** |
| **\@face.iface .getAndCutLipsRECT** | **Args: None** | **None** | **截取iface中的嘴唇矩形图片,并保存** |
| **\@image. getLipsColor** | **Args: \<str\>imagepath** | **None** | **取得嘴唇图片中嘴唇部分的颜色** |
| **\@image. rgbTo10** | **Args: \<int\>r,g,b** | **\<int\>** | **将一个RGB颜色值转化为10进制颜色值** |
| **\@image. hexto10** | **Args: \<str\>HEX** | **\<int\>** | **十六进制到10进制转换** |
| **\@image. getRGB** | **Args: \<int\>color** | **\<Turple\> [0]:R [1]:G [2]:B** | **从一个十进制的颜色值转为R,G,B** |
| **\@image. getColorDistan ce** | **Args: \<int\>Color1 \<int\>Color2** | **\<int\>** | **取得两个颜色在LAB空间下的视差距离** |
> **项目文件结构:**
| 文件名 | 功能 |
|--------------------|----------------------------------------------------------------------------------------------------------------------------------|
| /server.py | 项目的主程序 **于惠松 负责** 接受和处理来自网页的请求 基于Flask |
| /face.py | 人脸识别模块 **耿茂荣 负责** 负责对已上传的图片进行人脸采集 并提取其特征点 |
| /image.py | 图像处理模块 **靳浩昊 负责** 负责对已采集好的特征点进行图像处理,通过算法提取其嘴唇颜色 |
| /data.py | 数据处理模块 **赵君夫 负责** 负责对现有的包含各品牌口红的json数据进行分析处理 |
| /data.json | 来源于网络的 包含了口红色号及品牌名称的庞大数据集 |
| /static/ /temples/ | 静态网页资源 **于惠松 负责** 前端HTML5网页 UI基于 MDUI 前端框架构建 **交互由原生JavaScript的 FormData 和 XHR,实现异步AJAX请求** |
1. **关键代码**
![](media/016e693c66a4b74a61f16ceb36e2e07f.png)
![](media/aed262da3def1175abecf757d72c2f49.png)
![](media/90966a6dc7c1792f6a451c8d27ebeee8.png)
1. **运行效果**
> **运行方式:运行server.py 之后,在浏览器打开 http://127.0.0.1:8987/**
![](media/cc288296c3e04f8ae77b7bc0817d6ed7.png)
![](media/e543fa14dc65eee4b0d508a97b59a6e3.png)
![](media/a5b589fee7cf5de31d386dcafab66312.png)
运行时总体没有出现大问题,但仍有部分图片识别错误,人脸特征点不对,或者把非人脸识别成人脸。
1. **总结**
2. 对庞大数据集的处理
> 程序将口红数据储存在 lipstick.json
> 中,本程序遇到的难点在于如何把json数据集中庞大的数据转换为python中的列表,而且这个json数据采用了多重嵌套,�
热爱嵌入式的小佳同学
- 粉丝: 1w+
- 资源: 2352
最新资源
- 绿色便携版Python打包版
- Ngrok内网穿透启动隧道工具
- 异步电机matlab仿真模型
- BMS电池管理控制器,开发板资料 电池管理系统策略开发,应用层软件,开发流程开发
- 基于Transformer的各种变体已经是时间序列以及多元时间序列的一大热点,自注意力机制以及多头自注意力机制本团队已经可以基于matlab平台实现
- 基于自适应在线学习的概率负荷预测(代码)
- 出基于滑模的永磁直线同步电机的鲁棒H无穷控制Matlab程序,对于学习SMC和H无穷的结合可以很好参考
- COMSOL 孔隙尺度渗流模拟,单相及多相渗流模拟,案例复现,水平集(LS)和相场(PF)实现两相流模拟,水驱油,水驱气,二氧化碳驱油等模拟
- 可三相LCL型并网逆变器仿真模型,LCL滤波器,电容电流反馈有源阻尼方法 只采用网侧电流环控制方法时,由于系统的固有谐振峰的存在,以及数字控制延时的影响,通常延时时间 Td=1.5Ts(Ts
- 联电SOA软件平台:基于MATLAB/Simulink加速汽车软件开发生态建设与实现
- 柴油发电机仿真 Matlab Simulink 柴油发电机matlab仿真 微电网仿真 柴油发电仿真 风光柴储微电网 光伏发电 柴油发电 风力发电 储能电池 光柴储微电网 风柴储微电网 风机光伏柴油
- IEEE Access模板
- V2G 充电桩,新能源汽车车载充电机, MATLAB仿真模型 ,PFC+CLLC拓扑; 1. V2G,AC DC,DC DC双向充放电; 2. 前级,双向AC DC单相整流器(PWM),输入AC
- ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代
- 汽车行业面向服务架构(SOA)下传统应用向软件定义汽车(SDV)的迁移方案及挑战
- 西门子1200恒压供水程序+PID+触摸屏 此程序样 例为 一拖三恒压供水程序样,S7-1200PLC和KTP1000PN触摸屏 人机执行PID控制变频器实现恒压供水. 供学习参考,用15
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈