【问题标题】:Function throws an argument error even though the correct number of arguments were supplied即使提供了正确数量的参数,函数也会引发参数错误
【发布时间】:2021-05-03 23:08:12
【问题描述】:

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

我检查了很多次,这不是括号的问题。但是,我无法弄清楚这个问题。文档还确认我的代码是正确的。

【问题讨论】:

    标签: python python-imaging-library typeerror bounding-box


    【解决方案1】:

    您收到的错误消息很奇怪,而且是错误的,有人可能会说。解析参数的方式有些怪异,有时您会收到奇怪的错误消息。

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

    在您的代码中,您将参数一分为二,分别提供坐标。您应该将它们分组在一个列表中,它会起作用:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      相关资源
      最近更新 更多