即使提供了正确数量的参数,函数也会抛出参数错误
Function throws an argument error even though the correct number of arguments were supplied
我使用 PIL.ImageDraw.rectangle()
在图像周围绘制边界框。我提供图像的左上角、图像宽度和高度及其轮廓颜色。这些是正确的参数,但我收到此错误:
TypeError: function takes at least 3 arguments (2 given)
这是我的代码:
img_draw = ImageDraw.Draw(logo)
logo_w, logo_h = logo.size
location = (logo_position[0], logo_position[1])
img_draw.rectangle(location,
((logo_position[0] + logo_w),
(logo_position[1] + logo_h)),
outline='Red') # Red bounding box around each logo
我检查了很多次,这不是括号的问题。但是,我无法弄清楚这个问题。文档还确认我的代码是正确的。
您可能会说,您收到的错误消息很奇怪,而且是错误的。解析参数的方式有些怪癖,有时您会收到奇怪的错误消息。
你的错误实际上是你传递了太多参数的结果。 documentation 声明矩形的坐标应作为单个参数给出,可以是四个数字的列表,也可以是两个元组的列表。
在您的代码中,您将参数一分为二,分别提供坐标。您应该将它们分组在一个列表中,它会起作用:
img_draw.rectangle([location,
((logo_position[0] + logo_w),
(logo_position[1] + logo_h))],
outline='Red') # Red bounding box around each logo
请注意额外的方括号 [],用于将您的坐标组合到一个列表中。
我使用 PIL.ImageDraw.rectangle()
在图像周围绘制边界框。我提供图像的左上角、图像宽度和高度及其轮廓颜色。这些是正确的参数,但我收到此错误:
TypeError: function takes at least 3 arguments (2 given)
这是我的代码:
img_draw = ImageDraw.Draw(logo)
logo_w, logo_h = logo.size
location = (logo_position[0], logo_position[1])
img_draw.rectangle(location,
((logo_position[0] + logo_w),
(logo_position[1] + logo_h)),
outline='Red') # Red bounding box around each logo
我检查了很多次,这不是括号的问题。但是,我无法弄清楚这个问题。文档还确认我的代码是正确的。
您可能会说,您收到的错误消息很奇怪,而且是错误的。解析参数的方式有些怪癖,有时您会收到奇怪的错误消息。
你的错误实际上是你传递了太多参数的结果。 documentation 声明矩形的坐标应作为单个参数给出,可以是四个数字的列表,也可以是两个元组的列表。
在您的代码中,您将参数一分为二,分别提供坐标。您应该将它们分组在一个列表中,它会起作用:
img_draw.rectangle([location,
((logo_position[0] + logo_w),
(logo_position[1] + logo_h))],
outline='Red') # Red bounding box around each logo
请注意额外的方括号 [],用于将您的坐标组合到一个列表中。