python和nodejs人工智能_Nodejs开发人脸识别系统-教你实现高大上的人工智能

本文记录了一位开发者如何利用百度AI的人脸识别SDK,结合Node.js、Express和Vue-Cli,开发一个从信息录入到人脸识别的系统。在前端,通过Vue-Cli快速搭建页面,实现摄像头捕捉和图片处理;在后端,借助Express搭建服务接口。在开发过程中遇到的前端后端分离问题,通过Express得到解决。最终,系统能在Chrome浏览器上运行,但需注意跨域设置。
摘要由CSDN通过智能技术生成

一、缘起缘生

前段时间有个H5很火,上传个头像就可以显示自己穿军装的样子,无意中看到了一篇帖子叫 全民刷军装背后的AI技术及简单实现 ,里面提到了百度AI,我自己也试了一下下,效果就酱紫。

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzlhMWRkYTQ2NTQ0ZThhMTNjMTc4NzkzZTk3ZjgzODMwLnBuZw==.jpg

当然这个东西并不实用,只是纯粹娱乐而已,但是本人想是否可以通过这个技术,实现那种人脸识别验证,来验证如会议刷脸签到、网站刷脸登录这种高大上的技术。于是说干就干,花了将近一周时间完成了一个初步的DEMO。

二、技术储备

要实现这个系统,本人认为需要涉及到以下技术知识点,这些都是需要提前学习和积累的:

1、Nodejs

2、Express(基于后端开发)

3、Vue-Cli(基于前端开发,Vue的脚手架,没明白为啥叫脚手架o(╯□╰)o )

4、百度AI人脸识别SDK,点击学习地址

不得不说百度AI在人工智能方面确实比其他几个大佬做的厚道,接口全面开放,而且还是免费,人家估计都在起步阶段,而百度已经甩了好几条街。。。

在网上学习了一些资料,尤其是仔细分析了百度SDK以后,接下来就开始开发啦。

三、开发步骤

1、搭建vue-cli脚手架,主要用于快速搭建一个网站,安装方法

2、在router目录中配置index.js页面路由,方便多个页面之间交互,如图:

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzM0Nzc5OTA3YzFhNTI1M2E5NjZlMDcwODk0OGY4ZjA3LnBuZw==.jpg

设置了两个页面

3、新建两个页面到pages目录,其中Home是主页面,用于展示人脸识别;Main为输入页面,用于录入人员信息。

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyL2ZkZWM4NDgwMjMxMzRkMjk2MTI5MTY3ODI3ZjMxZWZmLnBuZw==.jpg

4、导入百度AI的SDK,都放在src目录中,太多了自己看吧,官方文档中有说明

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzBkMDc0YThkMjhkNzJmMTY5YmMyMmM2ZDU4Y2I4ZGZkLnBuZw==.jpg

5、制作Home页面,原理主要是设置了一个getVideo方法 开启摄像头 (前提是你的电脑需要有设备),然后通过takePhoto方法获得当前视频中的一帧图片,打印到canvas中(canvas支持打印绘画、图片、视频)。

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzU3ZmQ1MDNiZWY5YzYxYzdmMGRhOTI1ZmI3NDJmM2UzLnBuZw==.jpg

DOM结构

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyL2FkYWRiMDdlYzlmNTA1OGFiNmVjNDcyMDc5MWU2ZTMwLnBuZw==.jpg

getVideo方法

6、制作Main页面,这个页面就比较简单啦,只设置了两个输入框和一个上传图片按钮,先凑合着用吧。主要用于人员信息录入,需要先将人员相关信息建立档案,否则无法识别。

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzhiYjRhMTU0NmVkMzBlNzA3NmU4NzE3ZjkwY2ZjOWQ5LnBuZw==.jpg

7、说了这么一堆,都是前端的东西,那么怎么和 后端实现互通 呢?别急,看看这里先

里面有方法教你怎么去模拟一个接口数据并访问,其他接口也可以这样写,以此类推。

个人理解有个文件很重要,它就是build目录中的webpack.dev.conf.js文件,主要用于开发环境下的所有配置,因此如果 只是开发环境 下,后台访问和配置相关都可以写到这个文件中。

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzA4OTdjMWM5M2E1YjkyZmZmMzUyOGY1ODQzNmVlMzNlLnBuZw==.jpg

一个接口成型

8、测试调试,经过漫长的开发和排坑,终于有一定的成效啦!

四、发布部署,前端后端,傻傻分不清

在项目测试没问题需要发布的时候,遇到了一个问题,由于发布需要使用npm run build,文件打包好上传到服务器后 所有接口会报错 ,无法正常访问,天啊撸,难道之前做的都是白做的么?后来才发现,Vue-Cli主要还是用于渲染页面的,无法承载搭建后端服务接口,因此之前才会说只能在开发环境下使用。

相信很多新手都会遇到这个问题,前端后端会傻傻分不清,当需要前后端分离的时候,那么如何解决这个问题呢?

这个时候就可以就需要用到express啦,它是基于Node.js 平台的极简、灵活的 web 应用开发框架。而我只是需要搭建一个接口服务,简单几行代码就可以搭建服务了,so easy!!

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyL2U4YjkwNzhkYjE3NjE5ZWM3YTYzZmIyMDRiZjQwZTRlLnBuZw==.jpg

于是乎新建了一个项目作为服务端,将百度AI的项目独立出来,并建立server.js,把之前写好的方法copy过来即可,如图:

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzgwZjBjNzcyZWM0MjBlMGY3NjMxMmI5YzgyNGQ4Y2U4LnBuZw==.jpg

五、快点入坑吧

总结来说这个项目期间还是经历了好多次的纠结,有些问题报错略感奇葩了,但是不解决又觉得不舒服,只能入坑越入越深,如果你也想试试欢迎加入,坑坑更健康。

比如会出现跨域的问题,因为是前后端分离,所以会出现端口号或者地址不一样情况,这样就会出现跨域。解决方法就是验证跨域CORS问题,在server.js文件中设置跨域的访问即可,如图:

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzQ1YjA2ZWZlYTMxMGM3YWFiOGQ2ZTZkNjJhZmY2MzA5LnBuZw==.jpg

六、效果演示

1、信息录入地址(上传一张自拍哟):欢迎进入(进不了可复制链接:https://www.lejuhb.com/myface/#/main )

2、人脸识别地址:欢迎进入(进不了可复制链接:https://www.lejuhb.com/myface/)

注意:必须使用 摄像头和 最新谷歌浏览器 ,如果第一次无法识别,请点击浏览器右上角小图标,点击 加载不安全的脚本 完成,如图:

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzFhYmRjMGFkYTk5NmFlNTlkNjM5MzhhZGU3ZjYyZjE4LnBuZw==.jpg

其实这也是个坑

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzVkOTg5ZTI2NDFiM2Y0MjhkM2IyNjMxMGQ5MjMxMTI3LnBuZw==.jpg

页面真的很简单吧!

L3Byb3h5L2h0dHBzL2ltZy5jb2xhYnVnLmNvbS8yMDE3LzEyLzZkNDY0YzE5ZDUyMmNiMWQxYmRmZDc1MTU3ZmM0ZjA2LnBuZw==.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值