有时在朋友圈或其他地方会看到一些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. Speech Enhancement via Deep Spectrum Image Translation Network

    文中提出了一种深度网络来解决单通道语音增强问题. 链接:https://arxiv.org/abs/1911.01902 简介 因为背景噪声和混响的存在,录音通常会被扭曲,会对后端的语音识别等技术产生 ...

  2. document.write和innerHTML的区别?

    document.write是直接重写整个页面,innerHTML针对所属DOM节点进行重写,效率优于document.write.

  3. java登录图形界面

    编写程序,利用JtextField和JpasswordField分别接收用户输入的用户名和密码,并对用户输入的密码进行检验.对于每个用户名有三次密码输入机会. package beizi; impor ...

  4. 解析node-cors模块

    (function () { 'use strict'; var assign = require('object-assign'); var vary = require('vary'); var ...

  5. JAVA锁的膨胀过程和优化(阿里)

    阿里的人问什么是锁膨胀,答不上来,回来做了总结: 关于锁的膨胀,synchronized的原理参考:深入分析Synchronized原理(阿里面试题) 首先说一下锁的优化策略. 1,自旋锁 自旋锁其实 ...

  6. Windows安装gmpy2

    我在终端用python2的pip安装gmpy2时显示缺少Visual C++ 9.0 按照其要求,访问他给的网址安装一下 https://pypi.org/project/gmpy2/#files 进 ...

  7. leetcode 947. 移除最多的同行或同列的石头

    题目描述: 在二维平面上,我们将石头放置在一些整数坐标点上.每个坐标点上最多只能有一块石头. 现在,move 操作将会移除与网格上的某一块石头共享一列或一行的一块石头. 我们最多能执行多少次 move ...

  8. linux 操作文件夹

    创建文件夹[mkdir] 一.mkdir命令使用权限 所有用户都可以在终端使用 mkdir 命令在拥有权限的文件夹创建文件夹或目录. 二.mkdir命令使用格式 格式:mkdir [选项] DirNa ...

  9. oracle 之 using 使用

    oracle  中 using关键字使用规则: 1.查询必须是等值连接.2.等值连接中的列必须具有相同的名称和数据类型. 使用using关键字简化连接时,需要注意以下几点:1.使用 table1表和 ...

  10. eclipse.ini相关问题

    一般新装的eclipse,在eclipse.ini文件中,有设置默认的内存信息,如果你要开发一个大的项目或者导入大的项目,那么,eclipse就会时不时报出这样的错误:An internal erro ...