需求是人脸信息采集,帧率大概需要达到每秒采集30张照片,现在使用camera组件,目前有两种思路:
1.获取 Camera 实时帧数据,再利用canvas drawImage或者其他方式转换成所需数据格式;
2.CameraContext.takePhoto 定时去拍出照片再转换格式。
1主要问题卡在使用workers处理视频帧时,workers内部不能使用wx.xx的各种api,不知如何处理后续格式转换
2可基本实现需求,但对性能以及takePhoto所需的耗时影响了流程上对帧率传输的要求
想问问各位有没有什么好的思路或者方法
大佬,我会面临的需求是需要接算法的,请问能出个在workers里处理的示例吗?跪求。主要你提供的示例 太牛逼了,我见过最简约的示例了,膜拜,你有掘金的账号吗 我想关注你一下
iOS可以用listener.start传递一个useExperimentalWorker为true的worker,然后通过worker内的getCameraFrameData来获取帧数据:https://developers.weixin.qq.com/miniprogram/dev/api/worker/Worker.getCameraFrameData.html
不是应该用CameraContext.onCameraFrame,直接把帧内容的bitmap直接传给worker处理吗?takePhoto还要生成文件,这样处理的效率肯定下来了。
你后面是会接一些CV的算法或者模型么?如果是,那么你就需要用上述方法。你的需求如果是bitmap转成图片格式的文件,那么实在没什么必要在worker里面处理,除非你worker里有把bitmap转其它图片文件格式算法。否则拿到bitmap后,直接存在队列里,然后通过canvas绘制再存储到图片文件。本身canvas执行putImageData并不会阻塞吧。wx.xxx把canvas转成图片文件也不会阻塞。
请参照CameraContext.onCameraFrame文档:https://developers.weixin.qq.com/miniprogram/dev/api/media/camera/CameraContext.onCameraFrame.html