【问题标题】:TypeError: crop() takes from 1 to 2 positional arguments but 5 were givenTypeError:crop() 接受 1 到 2 个位置参数,但给出了 5 个
【发布时间】:2017-08-16 08:11:18
【问题描述】:
from PIL import Image
img=Image.open('/home/ahmed/internship/cnn_ocr/image1.png')
img.size
(2458, 3504)

但是当我尝试如下裁剪图像时:

img.crop(414,122,650,338)

我收到以下错误:

Traceback (most recent call last):
  File "/usr/lib/python3.5/code.py", line 91, in runcode
    exec(code, self.locals)
  File "<input>", line 1, in <module>
TypeError: crop() takes from 1 to 2 positional arguments but 5 were given

crop() 需要 4 个参数:左、上、右、下。怎么了

【问题讨论】:

    标签: python image python-imaging-library crop


    【解决方案1】:

    没有crop 采用一个显式参数:一个4元组(当然还有隐式的self)。 documentation 声明:

    Image.crop(box=None)

    从此图像返回一个矩形区域。 box 是一个 4 元组 定义leftupperrightlower像素坐标。

    注意:在 Pillow 3.4.0 之前,这是一个惰性操作。

    参数:
    box - 裁剪矩形,作为(左、上、右、下)元组。
    返回类型:图像
    返回:图像对象。

    (添加格式)

    所以你应该重写它:

    img.crop((414,122,650,338))
    #        ^    4-tuple    ^

    此外,您最好将输出分配给一个变量(可能是img 本身):

    <b>some_other_img = </b>img.crop((414,122,650,338))

    【讨论】:

    • 谢谢它的工作。但是在制作 img.crop((414,122,650,338)) 后它不会裁剪图像,我尝试了 img.size 它给了我图像的原始大小,并且使用 img.save('cropped_image.png') 我得到了原始图像
    • @vincent:见下面的注释:裁剪不能内联工作:你需要分配结果(也许你可以将它设置为img,所以img = img.crop(..))。
    猜你喜欢
    • 2016-10-13
    • 2019-04-20
    • 2018-11-15
    • 2014-07-19
    • 2016-08-09
    • 2020-01-30
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多