揭秘人工智能面相(看相、算命)原理以及实现 – 业余草
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!本博客日IP超过2000,PV3000左右,急需赞助商。极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云最近朋友圈里有很多人在转发一个非常火的人工智能面相小程序,我看了一下它非常火的原因可能是“人工智能”这个流行词。试着从码农的角度去还原它的实现原理,分析它的实现过程。
人们都说千人千面,世界上没有一张相同的面孔。那么面相小程序是如何做到的呢?人工智能在哪里呢?算命先生又是依据什么来算命的呢?
想到了这些,我就去谷歌,去寻找人们是如何算命的!
发现所谓的算命,其实就是人们根据面相十二宫,手相的一些特征来推测。
所谓的人工智能面相、看相、算命呢?就是根据上面这些宫位给你计算一个分数。分数高的面相就好!
每一个宫位都有解释,每一个宫位都代表一种命运。有的代表财运,有的代表婚姻,有的代表事业,有的代表疾病等。
一些面相老手,还能给你扯更复杂的宫位。
另外我在知识星球中听人说,淘宝上一些面相的店铺,一天收入可能在上万元。看来有钱人面相的还不在少数啊。
人工智能面相可能戳中了不少人的泪点,让它火了起来。
它虽然火了,但是面相的店铺生意可能就会一落千丈吧。所以也就有人喜欢有人忧愁。
那么说了这么多,用代码怎么来实现呢?
上面这个图片来源于网络,是面相算法中的一种。大致也就是根据宫位来算。
给每个位置标记上坐标。用代码获取五官之大小,形状,分暗等图像空间。这里面设计到一个人脸识别技术,大家可以网上看看相关的论文或技术实现。
其实我对人工智能还不算了解,相关的内容大家可以参考国内的、国外的一些技术论文,还有一些开源产品。
通过人脸识别技术,可以得到下面的这些宫位要素信息。
可以在人脸上找到影响巨大的部位宫位
可以获取宫位的坐标,从而计算各宫位的相对位置大小和比例
可以获取五官的位置和大小,根据其占人脸之比例分析
可以获取各宫位的颜色明暗,通过技术处理去掉相处之中的反光,然后使用直方图分析各部位和人脸的明暗关系,印堂发暗是可以比人眼更准确的分析得到
说白了,就是通过人工智能、机器学习给你画像。最后给你的画像打分。
贴一段简单的代码:
if(bPic){Paintp=newPaint();p.setColor(Color.RED);//p.setStyle(Paint.Style.FILL_AND_STROKE);p.setStyle(Paint.Style.STROKE);Pathpath=newPath();path.moveTo((int)(landmarks.get(48).x*resizeRatio),(int)(landmarks.get(48).y*resizeRatio));for(inti=48+1;i