获取 TypeError:找不到所需的参数“rec”(位置 2)

Posted

技术标签:

【中文标题】获取 TypeError:找不到所需的参数“rec”(位置 2)【英文标题】:Getting a TypeError: Required argument 'rec' (pos 2) not found 【发布时间】:2021-04-09 14:29:02 【问题描述】:

我的代码是

sample = images[0].permute(1, 2, 0).cpu().numpy()
    boxes = outputs[0]['boxes'].data.cpu().numpy()
    scores = outputs[0]['scores'].data.cpu().numpy()
    boxes = boxes[scores >= detection_threshold].astype(np.int32)
    fig, ax = plt.subplots(1, 1, figsize=(32, 16))
    for box in boxes:
        cv2.rectangle(img=sample,
                      pt1=(box[0], box[1]),
                      pt2=(box[2], box[3]),
                      color=(220, 0, 0))

ax.set_axis_off()
img = np.array(img)
st.image(cv2.UMat.get(sample), clamp=True)
st.write("# Results")
st.dataframe(pd.DataFrame(results))

但出现错误

TypeError: Required argument 'rec' (pos 2) not found
Traceback:
File "/home/stark/anaconda3/envs/mark/lib/python3.6/site-packages/streamlit/script_runner.py", line 332, in _run_script
    exec(code, module.__dict__)
File "/home/stark/streamlit/streamlit.py", line 129, in <module>
    color=(220, 0, 0))

我正在尝试在 streamlit 中部署我的模型,这是我坚持的最后一个地方

【问题讨论】:

请检查box[0]、box[1]的数据类型...它们必须是python int。我看到您已经将它们转换为 np.int32。试试int(box[0]) @ChristophRackwitz,我试过了,但它给出了同样的错误 另一个想法:尝试仅使用位置参数的调用,即不使用命名参数。看起来无论发生什么调度都会混淆并选择错误的 C++ 签名。 【参考方案1】:

嗯,我确实解决了

fig, ax = plt.subplots(1, 1, figsize=(16, 8))
sample = sample.copy()
for box in boxes:
    x1, y1, x2, y2 = box
    cv2.rectangle(sample,
                  (x1, y1),
                  (x2, y2),
                  (220, 0, 0), 2)


ax.set_axis_off()

谢谢@christoph,你的想法确实奏效了

【讨论】:

以上是关于获取 TypeError:找不到所需的参数“rec”(位置 2)的主要内容,如果未能解决你的问题,请参考以下文章

Django python:使用 DateInput -- 找不到所需的参数“年份”(位置 1)

为啥好多东西运行不了。出现“找不到所需的.dll文件?”

找不到指令“...”所需的控制器“ngModel”

Teamcity:错误 MSB3147:找不到所需的文件“setup.bin”

找不到连接到本地数据文件所需的数据提供者

Flutter 报错 Kotlin 找不到所需的 JDK 工具