自制微擎AI面相识别算术阈值
有时在朋友圈或其他地方会看到一些AI面相的分享链接或小程序,不是面相算命的有多吸引人,而是前面有"AI"两个字母。于是我就上网找了一下相关代码,发现了一个微擎系统的面相模块。下载下来后,借用了别人认证的服务号运行并阅读了源代码,好奇也逐步消失,唯一没跑通的就是脸部识别之后无法返回对应的结语;比如鼻相描述,眼相描述等等,因为需要一个收费接口,不过为了不收费只能自己写,这个后面再说。
版本清单
微擎1.8.3 (关注下面 公众号 回复“微擎”也可以获取源码)
AI面相模块1.17
安装环境
PHP+MYSQL+认证服务号
预览








脸部识别部分
脸部识别使用的是百度人脸识别API,地址: https://ai.baidu.com/tech/face/detect。个人账户也可以免用申请使用,微擎的面相是用户上传一张图片后,调用百度接口,通过API返回结果判断图片是否符合,符合保存头像和部分接口信息。然后通过脸部特征点将其返回到前端,前端根据特征点的坐标绘制五官定位,脸部眼睛眉毛等轮廓。


其中最主要是使用landmark特征点,就是脸部五官的XY坐标,可以把人脸想成蒙上一张网,眼角就是其中一个(x,y)。接口返回4特征点,72特征点,150特征点,值越大五官定位越精确。

其实接口还有返回脸型,颜值,是否真人脸,是否戴眼镜,表情,性别,人种等很多比较有趣的字段,不过有一个精确值。但是这个AI面相代码并没有使用这些,后面我修改的时候把这些元素都加上去了,感觉表情能识别出来会更惊喜。
支付提现部分
属于商业代码,自然就有收费和推广部分。所以里面有关于鼻子或其他解锁的需要收费,并且还有二级分销,就少不了提现功能。关于公众号中支付和提现,如果没有申请商户平台账号可以先申请。完了后只需要把公众号和商户平台进行绑定,记录相关参数和下载提现需要的证书秘钥等。最后就是在微擎系统中配置了。
1. 支付(公众号AppID, Appsecret, 商户ID,支付秘钥[自己在微信商户平台设置的32位字符串])


2. 提现(证书和证书私钥)

面相算术阈值
这个就是AI面相源码最后需要的了,因为当图片上传后,五官也定位了,但是没有描述。所以很多网站上下载的代码都是对这部分做了sg11加密,类似下面

虽然下载PHP扩展SG11也能正常运行,但是读不了源码更改不了比较难受。其中SG11扩展包分别是: ixed.5.5.win和 ixed.5.5.lin,对应windows和linux。不过我后来发现了这个获取描述的接口,地址: http://eb4lxnw.66bbn.com/api/index/getContent,请求参数见下,请求值是乱打的。

最后再回头去看代码的时候,发现上传头像后读取相关描述是直接传入五官名字就可以,比如传入“眼睛”,“鼻子”等返回。其实我开始以为这个描述是有结合特征点做筛选,所以我猜那个系统描述的数据量很大,当需要读取时就随机返回一条,知道这个后面后自己修改就比较好做了。
自己写的部分
添加了下面的几个类和几张表(包括五官解锁描述语,五官种类等)。不过自己是有结合72特征点计算五官的占比然后去匹配对应的数据的,鼻子宽度占比能知道鼻翼的大小等等。而数据是在网上采集和爬取后整理的,最后使用起来就像上面那几个报告的描述那样也能达到一点准确度。


公众号

自制微擎AI面相识别算术阈值的更多相关文章
- 玩转微信2次开发1_交互通信api.php(微擎版)
在2次开发中,涉及到比较多的也比较繁琐的就是服务器和微信服务器的交互 用户在公众号里操作回复关键词都会让微信服务器和开发者的服务器进行交互 用户一旦关注了某某公众号--微信后台会去查询该公众号是否连接 ...
- 微擎模块的安装文件manifest.xml
微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库中相应记录,并执行manifest.xml里指定的脚本. manifest.xml文件内容详细介绍如下: manifest - ...
- 微擎$_W['uniacid']无法获取
原因: 微擎非系统级别管理员(不是商户管理员),必须要https才能取到值
- 微擎开发------day04
(1) cache_write($key,$data) 按照指定键名缓存数据 cache_write('test', $data) (2) cache_load($key) 读取指定键名的缓存数据 ...
- 微擎开发------day03
微擎系统的路由 首先附上一张完整的项目目录图,可下载图片后查看详情 详细的路由介绍 (1)后台系统路由 例如:http://local.drp.com/web/index.php?c=home& ...
- 微擎开发------day02
基本要素: 微擎系统数据库操作使用PDO兼容方式,参数绑定进行查询操作 (1) 数据表加上表前缀 $sql = "select * from ".tablename('users ...
- 微擎开发------day01
微擎的数据常量 $_GPC -- 全局请求变量 类型: array 说明: 合并请求参数, 包括 $_GET, $_POST, $_COOKIE的内容. 相同键名覆盖规则为 $_COOKIE 覆盖 ...
- [转]微擎人人商城m()函数调用model方法
本文转自:http://yangjunwei.com/a/3177.html 微擎人人商城p()函数可内部调用任意插件的函数 http://yangjunwei.com/a/3216.html
- [转]微擎load()文件加载器
本文转自:https://blog.csdn.net/qq_32737755/article/details/78124534 微擎中加载文件需要用到 load() 在官网找到官方对load()的解释 ...
随机推荐
- 【MyEclipse异常】更换工作空间无法启动的异常
- phoenix SQLNestedException: Cannot create PoolableConnectionFactory
java通过phoenix的jdbc链接hbase数据库遇到如下情况: 查看日志发现phoenix维护的表system.function 的文件缺失了(在hdfs上),就是有节点掉了. 用命令 $HB ...
- Asp.Net微信js分享
1.准备工作 官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#111 必须是认证过的公众号才 ...
- 【JZOJ5739】【20190706】毒奶
题目 有\(n\)个现实城市,另有\(n\)个幻想城市 原图中在现实城市存在\(m\)条边,在幻想城市存在\(m-1-n\)条边 一个排列是合法的当且进当显示城市 \(i\) 向幻想城市 \(p_i\ ...
- 趣谈Linux操作系统学习笔记:第二十七讲
一.文件系统的功能规划 1.引子 咱们花了这么长的时间,规划了会议室管理系统,这样多个项目执行的时候,隔离性可以得到保证. 但是,会议室里面被回收,会议室里面的资料就丢失了.有一些资料我们希望项目结束 ...
- eclipse Referenced file contains errors (http://www.springframework.org/schema/context/spring-context-3.0.xsd)
1.情景展示 spring配置文件报错信息如下: Referenced file contains errors (http://www.springframework.org/schema/ ...
- 苹果 appstore 上架 ipv6 服务 配置
前言 好久之前的事了,苹果审核突然要求ipv6,一片哀嚎. 研究了好久找到了基于阿里云经典网络Windows Server的配置方法. https://bbs.aliyun.com/read/2849 ...
- Python3.7 - Argparse模块的用法
argparse 是一个命令行参数解析模块. argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离 ...
- Docker 版rocketmq部署
rocketmq 部署启动指南-Docker 版 最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑. 准备工作# ...
- python入门之函数对象
目录 函数是第一类对象 1.函数名可以被引用 2.函数名可以当做参数传递 3.函数名可以当做返回值使用 4.函数名可以被当做容器类型的元素 函数是第一类对象 First-Class Object : ...