算法|基于外接AI镜头模组 老旧安卓设备如何低成本升级人脸识别( 二 )

2.2 集成USB摄像头SDK
新建Android项目,将“libuvccamera-release.aar”开发包添加到项目libs文件夹中,修改build.gradle文件,编译项目,这样开发包就集成好了,如下图所示:
2.3 AI摄像头模组获取
虹软AI摄像头模组类似于一个软、硬件结合的小型开发机。软件上,模组集成了人脸识别算法及应用软件,通过RNDIS(RNDIS是指Remote NDIS,基于USB实现RNDIS实际上就是TCP/IP over USB,就是在USB设备上跑TCP/IP,让USB设备看上去像一块网卡)服务和Android上位机通信;硬件上,模组集成了UVC摄像头,通过USB接口对外输出视频流数据,只需要将模组插入Android上位机,即可工作。
2.4 实现UvcCameraHelper获取UVC视频流
2.4.1 获取到UsbDevice
我自己实现了一个UvcCameraHelper类,用来管理USB摄像头的生命周期。不同于集成好的Android设备摄像头,AI摄像头模组作为一个外接设备,需要使用“USBMonitor.java”类遍历获取,attach到对应的USB设备后,请求USB权限,如果权限通过,会有一个onConnect回调,表示USB设备已连接,可以进行下一步操作了,具体如下图所示:


如上图,onConnect方法回调成功以后,就可以对UsbDevice进行下一步操作了。
2.4.2 开启USB摄像头
拿到UsbDevice后,借助UVCCamera类,就可以开启USB摄像头了,调用UVCCamera.open()和UVCCamera.startPreview()方法后,摄像头开启成功,使用TextureView作为显示视频图像数据,就可以在Android上位机实时显示摄像头图像数据了,具体实现如下图所示:
2.5 接入AI摄像头模组
2.5.1 实现网络通信
AI摄像头模组里面集成了Arc服务,用于检测、识别人脸,并将人脸结果对外输出。将 AI模组插入Android上位机USB接口上,Arc服务就会自启动了。
通过RNDIS,我在Android端实现了一套Http和WebSocket通信服务,用来和AI模组进行数据传输。如下图所示,使用Retrofit作为网络通信框架:
如下图所示,创建API服务,和AI模组进行网络数据交互:
如下图所示,创建WebSoket服务,用于接收AI模组人脸识别数据:
通过以上步骤,就完成了AI摄像头模组和Android上位机网络通信功能。
3.5.2 网络数据交互
Arc服务包含设备激活、人员注册、设置参数等API。
如下图所示,调用激活接口,激活AI模组,才能够进行后续操作:
如下图所示,调用注册人员接口,将人脸库注册到AI模组中,用于后续人脸识别:
AI摄像头模组集成了人脸识别算法及算法核心业务,将模组摄像头对准人脸,开始识别人脸,并最终将人脸识别结果输出。如下图所示,我实现了一个WebSocket服务,用于接收人脸识别结果数据:
2.5.2 数据显示
拿到人脸识别结果数据,包括人脸框,人脸ID,人脸图片等。如下图人脸识别结果数据结构:
- One|基于Android 13打造:三星Galaxy S22抢先用上One UI 5.0
- 社交|腾讯视频为IP编写「价值算法」
- 新书推荐 │ 大数据算法设计与分析
- 算法|75英寸最值得入手的大屏电视,性能画质没得挑
- 算法|“赞奇科技”获得数千万元战略投资
- 中国移动|中国移动新一代超级SIM卡芯片来了:2MB存储、算法翻3倍
- 算法|为什么你只是说了某样东西,手机就会给你推送相关商品?几步教你轻松解决!
- 为了抢用户,Facebook要改算法了
- 索尼Xperia|索尼Xperia 10 IV手机在海外接受预定
- 算法|侃侃而谈| 为什么视频网站必然走向兼并整合?
