TypeError:crop()接受1到2个位置参数,但给出了5个

vin*_*nt 2 python image crop python-imaging-library

from PIL import Image
img=Image.open('/home/ahmed/internship/cnn_ocr/image1.png')
img.size
(2458, 3504)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试按以下方式裁剪图像时:

img.crop(414,122,650,338)
Run Code Online (Sandbox Code Playgroud)

我得到了以下错误:

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
Run Code Online (Sandbox Code Playgroud)

但是crop()需要四个参数:left,top,right,bottom。怎么了

Wil*_*sem 6

No crop 需要一个显式参数:4元组(当然也包含self)。该文档指出:

Image.crop(box=None)

返回此图像的矩形区域。的box是一个四元组 限定所述,和像素坐标。

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

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

(添加格式)

因此,您应该将其重写为:

img.crop((414,122,650,338))
#        ^    4-tuple    ^
Run Code Online (Sandbox Code Playgroud)

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

some_other_img = img.crop((414,122,650,338))
Run Code Online (Sandbox Code Playgroud)