Pose姿态估计应用中PoseModule的findAngle方法报ValueError求助
解决PoseModule中findAngle的ValueError问题
问题核心
报错ValueError: too many values to unpack (expected 2)出现在findAngle方法的x1, y1 = self.lmList[p1][1:3]行,说明self.lmList[p1][1:3]返回的元素数量不等于2,导致无法解包成x和y两个变量。
具体解决思路
排查
self.lmList的实际结构
在PoseModule.py的findAngle方法中,第97行(获取关键点的注释下方)添加打印代码,查看目标切片的内容:# 在第97行后添加调试代码 print("Debug Info:", self.lmList[p1][1:3])运行后观察输出,比如若输出是
[x, y, confidence],说明切片范围错误,需调整为只取x和y对应的索引;若输出是其他多元素结构,根据实际内容修改解包逻辑。确认
self.lmList是否被正确更新
检查findPosition方法的实现:它是否将计算得到的关键点列表赋值给了self.lmList?比如方法内需要有self.lmList = 计算后的关键点列表这类代码。如果findPosition仅返回列表但未更新实例变量,self.lmList可能是旧数据或空值,结构不符合预期。修正解包逻辑
如果打印发现切片返回元素数量超过2,直接指定索引解包而非使用切片:# 替换原第98-100行代码 x1, y1 = self.lmList[p1][1], self.lmList[p1][2] x2, y2 = self.lmList[p2][1], self.lmList[p2][2] x3, y3 = self.lmList[p3][1], self.lmList[p3][2]若实际关键点的x、y对应其他索引,比如索引0和1,再对应调整数字即可。
验证关键点索引有效性
确认传入的11、13、15是否为所用姿态模型(如PoseNet、MediaPipe Pose)支持的关键点索引,确保这些索引在self.lmList中存在对应元素。
内容的提问来源于stack exchange,提问作者leo_nidas300
相关产品推荐
相关产品推荐

