获取 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)