<!--index.wxml--> <view class= "page" > <camera device-position= "back" flash= "off" binderror= "error" frame-size= "large" class= "mycamera" > </camera> <canvas canvas-id= "mycanvas" class= "mycanvas" > </canvas> </view> /**index.wxss**/ page{ width: 100%; height: 100%; } .mycamera{ top:0px; width: 100%; height: 50%; position: fixed; } .mycanvas{ top:50%; width: 100%; height: 100%; background-color: black; position: fixed; } //index.js //获取应用实例 const app = getApp() var nCounter = 0 var listener Page({ data: { }, onLoad: function () { }, onReady: function (res) { var that = this var camera_ctx = wx.createCameraContext() listener = camera_ctx.onCameraFrame((frame) => { if (nCounter == 0) { wx.canvasPutImageData({ canvasId: 'mycanvas' , x: 0, y: 0, width: frame.width, heihgt: frame.heihgt, data: new Uint8ClampedArray(frame.data), success(res) { console.log( 'OK' ) }, fail(res) { console.log( 'FAIL' ) } }) } nCounter++ if (nCounter >= 10) { nCounter = 0 } }) listener.start() } }) |
- 当前 Bug 的表现(可附上截图)
上面为相机控件显示的内容,下面为canvas显示onCameraFrame获取的frame数据,可见内容并不一致,主要表现是图像显示内容的范围不一致
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
怎么裁剪呀,兄弟meng,关于识别不清楚的,我可以给你们一个建议,我们可以暗箱操作一波:先用模型判断图片是否在视窗内,当模型判断成功后,调用一下拍照接口,传给后端进行识别
一样的问题,而且 安卓frame.data 生成的图片是拉伸过的,Iphone的生成的图片是正常的
安卓的图片被横向拉伸了,感觉是宽高写反了@那个很帅的小白
这个问题在新版 7.0.5 已经修复
请问有解决吗,现在还是不同设备,onCameraFrame 获取到的 frame 尺寸是不一样的,而且和 resolution 和 frame-size 设置不同的值有关系,不同的值也会有不同的 frame 尺寸。
所以这是个无疾而终的讨论?😂
请问楼主问题最后解决了吗?
请问,最后大家到底是怎么解决的呢
我也遇到同样的问题,图片拉伸严重,拿去识别图中文字识别率特别低。老哥解决了吗,怎么解决的来着?
我也用到了这个功能,但是我的程序一直都是失败的,根本获取不到能使用的base64编码,有没有其他的获取base64的方法啊
let pngData = upng.encode([frame.data], frame.width, frame.height);
// // // 4. base64编码
let base64 = wx.arrayBufferToBase64(pngData);
你好,我也遇到了同样的问题,会不会是基础库版本的原因呢?真机的基础库和开发者工具是不一样的,并且开发者工具上只有最新的基础库版本可以正常使用oncameraframe
现在使用CameraFrameListener 获取frame.data ,实现类似AI识别功能实现了吗