自制微擎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()的解释 ...
随机推荐
- 总结敏捷开发之Scrum
敏捷开发的概念 敏捷开发是一种以人为核心,迭代,循序渐进的开发方法. 为什么说是以人为核心?传统的瀑布模型是以文档驱动的,但是在敏捷中,只写少量的文档,注重的是人与人之间面对面的交流. 什么是迭代?迭 ...
- 5-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(配置MQTT的SSL证书,验证安全通信)
4-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(为域名申请SSl证书) 前面的准备工作终于完了 复制这两个证书 放到云端MQTT的这个位置,其实放哪里都可以 ...
- django中models字段的联合限制
一.字段联合使用的限制设置: 有这么个需求,现有两个字段,A字段是选择用户是不是vip, B字段是统计用户的vip等级; 要求: 用户不是vip时,A选择false,B字段为空; 是vip时,A字段选 ...
- sublime插件开发: 文件说明
sublime插件开发 文件 .sublime-settings 设置文件 Main.sublime-menu 主菜单按钮配置文件 Side Bar.sublime-menu 侧边栏菜单文件列表,选中 ...
- C++ new delete 一维数组 二维数组 三维数组
h----------------------------- #include "newandmalloc.h" #include <iostream> using n ...
- 关于Vue中props的详解
看一下官方文档: 组件实例的作用域是孤立的.这意味着不能 (也不应该) 在子组件的模板内直接引用父组件的数据.父组件的数据需要通过 prop 才能下发到子组件中. 也就是props是子组件访问父组件数 ...
- 【原创】在windows下使用xampp搭建phpcms v9
我的操作环境: 操作系统:windows 7 64 位操作系统(有点古老,哈哈) 1.下载php环境和phpcmsv9源代码:phpcms v9 的源码:phpcms_v9.5.10_UT ...
- cad.net cad宋体问号 删除 KT_ST.ttf
我的两台电脑是win10的,(可能这个问题也存在在xp.win7.win8.......毕竟十年前我就遇到过了.......) 一台电脑的cad字体设置为"宋体",另一台电脑打开之 ...
- Linux内核中的IS_ERR()实现
1.前言 对于任何一个指针来说,必然有三种情况:一种是有效指针,一种是NULL,也就是空指针,一种是错误指针,也就是无效指针,在Linux内核中,所谓的错误指针就是指其已经到达了内核空间的最后一个pa ...
- [转帖]关于 ./configure
./configure --prefix=/usr/local/scws --prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/ ...