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

如何将MTCNN生成的JSON人脸关键点转为双列文本格式?

提取MTCNN人脸关键点并输出双列坐标纯文本

实现步骤(以Python为例)

  • 读取解析JSON:将保存的MTCNN结果JSON文件读入并解析为Python可操作的列表或字典
  • 提取指定关键点:按左眼、右眼、鼻子、左嘴角、右嘴角的顺序,从keypoints字段中取出对应坐标
  • 格式化输出:将每个关键点的x、y坐标以双列形式(空格或制表符分隔)写入新的纯文本文件

示例代码

假设你的MTCNN结果JSON文件(mtcnn_result.json)结构如下:

[
{
"box": [100, 80, 150, 180],
"confidence": 0.99,
"keypoints": {
"left_eye": [130, 120],
"right_eye": [190, 122],
"nose": [160, 150],
"mouth_left": [135, 175],
"mouth_right": [185, 173]
}
}
]

执行以下代码即可完成格式转换:

import json

# 读取JSON结果文件
with open('mtcnn_result.json', 'r', encoding='utf-8') as f:
    face_results = json.load(f)

output_content = []
# 遍历每张检测到的人脸
for face in face_results:
    # 按要求顺序提取关键点
    target_keys = ['left_eye', 'right_eye', 'nose', 'mouth_left', 'mouth_right']
    for key in target_keys:
        x, y = face['keypoints'][key]
        # 生成双列格式的行(用空格分隔,可换成\t用制表符分隔)
        output_content.append(f"{x} {y}")

# 写入输出文件
with open('keypoints_coords.txt', 'w', encoding='utf-8') as f:
    f.write('\n'.join(output_content))

注意事项

  • 如果JSON中只有单张人脸(非列表结构),直接去掉for face in face_results循环,改用face = face_results
  • 确认keypoints中的键名与代码一致,不同MTCNN实现可能用leftEye这类驼峰命名,需对应调整target_keys里的名称
  • 双列分隔符可根据需求替换,比如用制表符\t替代空格,适配不同的后续处理工具

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:15:35