logo
积分中心
我给 HarmonyOS 应用加了人脸检测,才发现“检测到人脸”不等于“识别了这个人”#向光而行 码向未来
头像 云端旅人 2026-10-23 16:52:21    发布
34 浏览 2 点赞 0 收藏

做视觉类应用时,人脸检测是一个很容易被想到的功能。例如拍照应用可以根据人脸位置调整构图,视频会议工具可以分析画面中是否有人,照片整理工具则可以用人脸区域辅助管理图片。

HarmonyOS 的 Core Vision Kit 提供人脸检测等基础视觉能力。官方能力介绍还列出了人脸比对等 API。

不过,我觉得开发这类功能之前,首先要区分两个概念:人脸检测和人脸识别不是同一件事。

人脸检测主要回答“图像中有没有人脸、位于什么位置”;人脸比对则用于比较不同人脸样本之间的相似程度。仅仅检测到一张脸,并不能证明这个人是谁。



先定义检测结果的数据结构

为了让界面层能够独立工作,我会把视觉服务的返回结果转换成应用自己的模型。

interface FaceRegion {
  left: number;
  top: number;
  width: number;
  height: number;
}
 
function isValidFaceRegion(
  face: FaceRegion
): boolean {
  return face.left >= 0 &&
    face.top >= 0 &&
    face.width > 0 &&
    face.height > 0;
}
 
function faceArea(
  face: FaceRegion
): number {
  return face.width * face.height;
}

这些字段表示应用层需要的矩形区域,并不是官方人脸检测 API 的完整返回类型。接入时应按照真实 SDK 的坐标定义和返回结构进行转换。

这里的面积计算也很简单,但在一些场景中很实用。例如,拍照构图工具可以优先关注画面中较大的脸部区域,而不是把每一个检测结果都当作同等重要的目标。



画出人脸框时,要注意坐标转换

假设检测结果使用原始图片坐标,而页面显示的是缩放后的图片,直接把检测框的位置用于页面布局,很可能出现偏移。

因此,我会先确认图片实际显示尺寸、缩放比例和裁剪区域,再把检测框转换到界面坐标系。

如果图片按比例缩放,且没有额外裁剪,可以用下面的方式计算:

interface DisplayRect {
  left: number;
  top: number;
  width: number;
  height: number;
}
 
function scaleFaceRegion(
  face: FaceRegion,
  scale: number,
  offsetX: number,
  offsetY: number
): DisplayRect {
  return {
    left: face.left * scale + offsetX,
    top: face.top * scale + offsetY,
    width: face.width * scale,
    height: face.height * scale
  };
}

这里的 scale、offsetX 和 offsetY 必须根据图片的实际布局计算。如果存在旋转、裁剪或不同的宽高缩放比例,还需要进一步处理坐标映射。



我会优先做哪些测试?

首先测试单人照片,再测试多人合照,最后测试光线较暗、侧脸和部分遮挡的情况。

同时,要处理没有检测到人脸的情况,不能让空结果导致页面崩溃。

涉及人脸数据时,隐私尤其重要。应用应明确数据用途、限制访问范围,并尽量减少不必要的人脸数据保存。人脸检测也不应被直接当成身份认证手段。

我的体会是,视觉 AI 的开发工作并不是调用接口就结束了。把检测结果正确映射到页面、理解能力边界,并对敏感数据进行合理管理,才是一个可用功能真正需要完成的部分。

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
HarmonyOS
地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除

京ICP备:2022009079号-2

京公网安备:11010502051901号

ICP证:京B2-20230255