有时在朋友圈或其他地方会看到一些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面相识别算术阈值的更多相关文章

  1. 玩转微信2次开发1_交互通信api.php(微擎版)

    在2次开发中,涉及到比较多的也比较繁琐的就是服务器和微信服务器的交互 用户在公众号里操作回复关键词都会让微信服务器和开发者的服务器进行交互 用户一旦关注了某某公众号--微信后台会去查询该公众号是否连接 ...

  2. 微擎模块的安装文件manifest.xml

    微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库中相应记录,并执行manifest.xml里指定的脚本. manifest.xml文件内容详细介绍如下: manifest - ...

  3. 微擎$_W['uniacid']无法获取

    原因: 微擎非系统级别管理员(不是商户管理员),必须要https才能取到值

  4. 微擎开发------day04

    (1) cache_write($key,$data)  按照指定键名缓存数据 cache_write('test', $data) (2) cache_load($key)  读取指定键名的缓存数据 ...

  5. 微擎开发------day03

    微擎系统的路由 首先附上一张完整的项目目录图,可下载图片后查看详情 详细的路由介绍 (1)后台系统路由 例如:http://local.drp.com/web/index.php?c=home& ...

  6. 微擎开发------day02

    基本要素: 微擎系统数据库操作使用PDO兼容方式,参数绑定进行查询操作 (1) 数据表加上表前缀 $sql  = "select * from ".tablename('users ...

  7. 微擎开发------day01

    微擎的数据常量 $_GPC   -- 全局请求变量 类型: array 说明: 合并请求参数, 包括 $_GET, $_POST, $_COOKIE的内容. 相同键名覆盖规则为 $_COOKIE 覆盖 ...

  8. [转]微擎人人商城m()函数调用model方法

    本文转自:http://yangjunwei.com/a/3177.html 微擎人人商城p()函数可内部调用任意插件的函数 http://yangjunwei.com/a/3216.html

  9. [转]微擎load()文件加载器

    本文转自:https://blog.csdn.net/qq_32737755/article/details/78124534 微擎中加载文件需要用到 load() 在官网找到官方对load()的解释 ...

随机推荐

  1. ABP 后台调用接口 获取返回的数据

    原文:https://www.cnblogs.com/i3yuan/p/10703500.html insert 简单测试: public void test8() { string url = &q ...

  2. three.js 居中-模型

    api: 代码: <!DOCTYPE html> <html lang="en"> <head> <title>three.js w ...

  3. selenium--操作JS弹框

    前戏 我们常见的弹框有三种,一种是alert弹框,一种是prompt弹框,还有一种是confirm弹框那他们有什么不同呢?不同点就是他们长的不一样,alert弹框有一段文字和一个确定按钮,如下 在来看 ...

  4. Docer安装及简单使用

    前提条件 如果是CentOS8,可以参考这篇文章centos8.0安装docker Docker 运行在 CentOS 7 上,要求系统为64位.系统内核版本为 3.10 以上. Docker 运行在 ...

  5. Android Q Beta 6 终极测试版发布!

    前言 当今手机市场可谓是百花齐放,但手机系统却屈指可数,其中Android和iOS就占据了整个手机系统市场的99%,单单Android就占据了整个手机系统市场的86%,可谓是占据绝对优势.     其 ...

  6. GPG实践

    遇见的问题 安装之后没有显示如教程中的 直接提示真实姓名于电子邮件的地址 公钥与密钥 设置吊销证书

  7. Burp Suite 入门教程(BURP SUITE TUTORIAL )

    参考链接1:https://www.pentestgeek.com/what-is-burpsuite 参考链接2:https://www.pentestgeek.com/web-applicatio ...

  8. Shell脚本之二 变量、字符串和数组

    一.Shell 变量 1.1 定义变量 定义变量时,变量名不加美元符号($),如: your_name="runoob.com" 注意,变量名和等号之间不能有空格,这可能和你熟悉的 ...

  9. Flume的Source、Sink总结,及常用使用场景

    数据源Source RPC异构流数据交换 Avro Source Thrift Source 文件或目录变化监听 Exec Source Spooling Directory Source Taild ...

  10. 第十六节:Asp.Net Core中Session的使用、扩展、进程外Session

    一. 简介 关于Session的原理可参照Asp.Net版本Session的文章,去查阅. 1. 普通用法 (1).通过Nuget引入[Microsoft.AspNetCore.Http]程序集,Co ...