yydsczq_yyds 2024-01-31 12:34 采纳率: 0%
浏览 8

openpose轻量级版本,不能找到全部关键点时,关键点坐标的输出

在pycharm中运行openpose轻量级版本的demo.py文件,可以识别出人体的关键点,在其中加入坐标输出的模块可以输出所有关键点的坐标。但是当不能找到人体全部关键点时,坐标的输出就会混乱,且失去了关键点序号与人体部位的一一对应关系。运行完成后报一个数组越界的错误IndexError: index 14 is out of bounds for axis 0 with size 14。
我希望比如当只能找到14个点时(标准为18点模型),找不到的点的坐标输出为-1,能找到的点保持关键点序号与人体部位的一一对应关系。代码应该怎么修改?求专业人士解答。
图1:我加入的坐标输出的代码。
图2:全部关键点都能找到时的输出。正确。
图3:部分关键点找不到(不是置信度过低,是压根儿没有)时的输出。输出的非常乱,且失去了关键点序号与人体部位的一一对应关系。

img

img

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-31 12:36
    关注

    引自免费微信小程序:皆我百晓生

    根据你的描述,你想要修改openpose轻量级版本的demo代码,以便在找不到全部关键点时输出正确的坐标,并保持关键点序号与人体部位的一对一关系。

    为了达到这个目标,你可以使用以下步骤进行修改:

    1. 在代码中找到检测到的关键点数组,通常是一个二维数组。你可以找到类似于keypoints的变量。
    2. 确保关键点数组的长度为标准的18,如果不足18个点,就在数组末尾补上缺失的点。
    3. 在补上缺失的点时,将缺失点的坐标设置为-1。
    4. 最后,使用修改后的关键点数组进行后续操作,如输出坐标。

    下面是一个示例代码的修改,帮助你实现所需的功能:

    keypoints = # 检测到的关键点数组
    
    # 确保关键点数组长度为标准的18
    if len(keypoints) < 18:
        for i in range(len(keypoints), 18):
            keypoints.append([-1, -1, -1])  # 将缺失的点坐标设置为[-1, -1, -1]
    
    # 输出关键点的坐标
    for i, kp in enumerate(keypoints):
        x, y, confidence = kp
        print(f"关键点 {i}: 坐标 ({x}, {y}), 置信度: {confidence}")
    

    这样修改后,无论找到多少个关键点,输出的关键点坐标都是正确的,并且保持关键点序号与人体部位的一一对应关系。

    希望以上解决方案能够帮到你!如果你还有其他问题,请随时提问。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月31日

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,