多目标实时行为检测参数问题

你好,在多目标实时行为检测里,我运行遇到一个错误,update() takes 4positional arguments but 5 were given。位置是poserec第91行代码:outputs = Tracker.update(xywh, pred[:,4:5], pred[:,5].tolist(), cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB))。这个怎么解决呢。

img

参数之间是逗号,参数里面也是逗号导致认为参数多了

根据你提供的错误信息,“update() takes 4 positional arguments but 5 were given”意味着某个函数或方法调用传递了多余的参数。在你的情况下,这个问题是由于Tracker.update()被传入了5个参数,但它只期望接收4个参数,并且你需要检查一下该方法的定义。

请检查Tracker.update()的源代码,并确保方法定义只接受4个位置参数或者检查在传递给该方法时是否有错误。如果调用时确实需要5个参数,则需要更新Tracker.update()的定义以支持此格式。

该回答参考ChatGPT:
这个错误提示意味着您正在传递了5个参数给update()函数,但是该函数只需要4个参数。根据代码提示,最后一个参数似乎是由一个cv2.cvtColor()调用返回的值提供的。

您可以尝试删除cv2.cvtColor()调用或者将其结果保存到一个变量中,并检查是否仍然存在该问题。另外,确保所有其他参数都正确传递给update()函数。

你直接在评论区提问就好了,我会回答的,不需要悬赏,有点呆

引用chatGPT作答,这个错误提示说明函数update()接收了5个参数,但是你传递给它的参数数量有误。根据你提供的代码和错误提示,update()函数需要四个参数,但是你给它传递了五个参数。

更具体地说,函数update()需要以下四个参数:

xywh:一个形状为(N, 4)的numpy数组,其中N是当前帧中目标的数量。该数组存储了每个目标的[x, y, w, h],即目标的左上角坐标和宽高。
confidences:一个形状为(N,)的numpy数组,存储每个目标的置信度得分。
class_ids:一个形状为(N,)的列表,存储每个目标的类别标签。
frame:当前帧的图像数据。
而你传递给update()函数的参数包括:

xywh:同上
pred[:,4:5]:一个形状为(N,1)的numpy数组,存储每个目标的置信度得分。
pred[:,5].tolist():一个形状为(N,)的列表,存储每个目标的类别标签。
cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB):当前帧的图像数据。
因此,你需要检查你的代码并找出哪个参数不应该被传递给update()函数,然后将其删除或调整参数数量。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个错误提示说明你传递给update()函数的参数个数不匹配。根据你提供的代码,update()函数需要传递四个参数,但是你传递了五个参数。经过检查,发现是第四个参数cv2.cvtColor(np_img, cv2.COLOR_BGR2RGB)多传递了一个参数导致的。

具体解决方法是:将这个参数去掉,在调用update()函数时只传递xywhpred[:,4:5]pred[:,5].tolist()三个参数。代码可能类似于这样:

outputs = Tracker.update(xywh, pred[:,4:5], pred[:,5].tolist())

如果问题还未解决,请提供完整代码以便更好的排查。
如果我的回答解决了您的问题,请采纳!