从双路预览的获取的buffer创建pixelMap调用faceDetector.detect,返回的矩形框坐标不准,脸是贴着屏幕左边的,但是left是190多,face point各个点的x是900多,这个换算规则是怎样的?
// 将buffer转为 PixelMap
let sourceOptions: image.SourceOptions = {
sourceDensity: 120,
sourcePixelFormat: 8,
sourceSize: {
height: 1080,
width: 1920
}
}
let imageSource = image.createImageSource(buffer, sourceOptions);
const decodingOptions: image.DecodingOptions = {
editable: true, // 是否可编辑。当取值为false时,图片不可二次编辑,如crop等操作将失败。
desiredPixelFormat: 3, // 解码的像素格式。3表示RGBA_8888。
}
// 创建pixelMap
let originalPixelMap:image.PixelMap = await imageSource.createPixelMap(decodingOptions);
// 创建vision info
let visionInfo: faceDetector.VisionInfo = {
pixelMap: originalPixelMap,
};
let data: faceDetector.Face[] = await faceDetector.detect(visionInfo);
if (data.length === 0) {
this.faceInView = false;
return;
}
let face: faceDetector.Face = data[0];
let rect: faceDetector.FaceRectangle = face.rect;
可对应像素单位进行转换,像素单位链接:
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-pixel-units-V5