You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于dlib的人脸识别应用:如何用cv2.putText在人脸上方显示姓名?

在人脸识别结果上方绘制姓名的实现方案

我来帮你搞定这个需求!要在检测到的人脸上方用cv2.putText()写入姓名,核心是先拿到人脸检测框的坐标,再计算文字的合适位置,最后完成绘制。你的现有代码已经完成了人脸识别的核心逻辑,只差坐标获取和文字绘制的部分,下面是具体的修改步骤:

1. 确保你能获取人脸检测框的坐标

你的代码里循环遍历的是face_image,但要绘制文字必须知道这个人脸在原图像中的位置。假设你是用dlib的人脸检测器(比如get_frontal_face_detector())得到的人脸框,那修改循环,同时遍历检测框和人脸区域:

# 假设你已经用dlib检测器得到了人脸框列表rects
for k, rect in enumerate(rects):
    # 从原图像中提取人脸区域(对应你代码里的face_image)
    x1 = rect.left()
    y1 = rect.top()
    x2 = rect.right()
    y2 = rect.bottom()
    face = original_image[y1:y2, x1:x2]  # original_image是你的输入图像
    
    # --- 下面是你原有的识别代码 ---
    faceBlob = cv2.dnn.blobFromImage(face, 1.0 / 255, (96, 96), (0, 0, 0), swapRB=True, crop=False)
    embedder.setInput(faceBlob)
    vec = embedder.forward()
    preds = recognizer.predict_proba(vec)[0]
    j = np.argmax(preds)
    proba = preds[j]
    name = le.classes_[j]
    # --- 识别代码结束 ---
    
    # 接下来添加文字绘制逻辑

如果你用的是OpenCV的人脸检测器(比如Haar级联),检测结果是(x, y, w, h),那坐标转换为:

x1 = x
y1 = y
x2 = x + w
y2 = y + h

2. 计算文字的绘制位置

要把姓名放在人脸上方,需要让文字的底部略高于人脸框的顶部,同时避免文字超出图像边界:

  • 先计算文字的尺寸(可选,但能避免文字出界)
  • 设定文字的x坐标和y坐标(比如左对齐,y坐标为人脸框顶部减10像素,如果太靠近顶部就调整到图像内)

3. 调用cv2.putText完成绘制

结合置信度一起显示会更直观,同时可以绘制人脸框让结果更清晰:

# 定义绘制参数
font_style = cv2.FONT_HERSHEY_SIMPLEX
font_size = 0.7
text_color = (0, 255, 0)  # 绿色文字,可根据需求调整
line_thickness = 2

# 生成要显示的文本(包含姓名和置信度)
display_text = f"{name}: {proba * 100:.2f}%"

# 计算文本的宽高,用于调整位置
(text_w, text_h), _ = cv2.getTextSize(display_text, font_style, font_size, line_thickness)

# 确定文本的左下角坐标:左对齐,位于人脸框上方
text_x = x1
text_y = y1 - 10 if y1 - 10 > text_h else text_h + 5  # 避免文字超出图像顶部

# 绘制文本
cv2.putText(original_image, display_text, (text_x, text_y), font_style, font_size, text_color, line_thickness)

# 可选:绘制人脸检测框
cv2.rectangle(original_image, (x1, y1), (x2, y2), text_color, line_thickness)

关键注意事项

  • 确保你操作的是原图像(original_image),而不是提取出的人脸小图face
  • 如果人脸靠近图像顶部,一定要判断text_y的数值,避免文字被截断
  • 可以根据需求调整字体、颜色、大小等参数,比如用cv2.FONT_HERSHEY_COMPLEX字体更美观

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:17:47