Python 函数抛出参数错误,即使提供了正确数量的参数

Python 函数抛出参数错误,即使提供了正确数量的参数,python,python-imaging-library,typeerror,bounding-box,Python,Python Imaging Library,Typeerror,Bounding Box,我使用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_posit

我使用
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

我检查了很多次,这不是括号的问题。然而,我无法理解这个问题。文档还确认了我的代码是正确的。

您收到的错误消息是特殊的,可能会说是错误的。解析参数的方式有些奇怪,有时会收到奇怪的错误消息

事实上,你的错误是你传递了太多参数的结果。声明矩形的坐标应该作为单个参数给出,或者作为四个数字的列表,或者作为两个元组的列表

在代码中,您已将参数拆分为两个,分别提供坐标。您应该将它们分组到一个列表中,这样可以:

img_draw.rectangle([location,
        ((logo_position[0] + logo_w),
        (logo_position[1] + logo_h))], 
        outline='Red')  # Red bounding box around each logo

请注意额外的括号[],用于将坐标合并到一个列表中。

您收到的错误消息是特殊的,也可能是错误的。解析参数的方式有些奇怪,有时会收到奇怪的错误消息

事实上,你的错误是你传递了太多参数的结果。声明矩形的坐标应该作为单个参数给出,或者作为四个数字的列表,或者作为两个元组的列表

在代码中,您已将参数拆分为两个,分别提供坐标。您应该将它们分组到一个列表中,这样可以:

img_draw.rectangle([location,
        ((logo_position[0] + logo_w),
        (logo_position[1] + logo_h))], 
        outline='Red')  # Red bounding box around each logo
请注意额外的括号[],用于将坐标合并到列表中