裁剪图像后无法调用 .show() 函数
Posted
技术标签:
【中文标题】裁剪图像后无法调用 .show() 函数【英文标题】:I can't call the .show() function after I crop an image 【发布时间】:2020-12-19 07:48:46 【问题描述】:我正在尝试在此处裁剪图像,但是每次在裁剪后的图像上运行 .show() 时,都会出现错误。
使用 Python 3.9.1 和 Pillow 8.0
from PIL import Image
image = Image.open('image.PNG')
print (image.size)
width, height = image.size
print (width)
print (height)
newWidth = int(width/2)
newHeight = int(height/2)
print (newWidth)
print (newHeight)
img = image.crop((newWidth,newHeight,newWidth,newHeight))
img.show()
这就是错误的样子
【问题讨论】:
请复制错误代码并粘贴到这里,不要粘贴图片crop()
返回的图像可能不好,因为您传递给它的参数不正确。请参阅documentation。 box 参数应该是(left, upper, right, lower)
,这不是您要传递的内容——您定义了一个宽度和高度为零的矩形。
【参考方案1】:
使用cv2
的替代方法
import cv2
img=cv2.imread("image.PNG")
new_height=int(img.shape[0]/2)
new_width=int(img.shape[1]/2)
img=img[0:new_height,0:new_width] #cropping image
cv2.imshow("cropped_image", img)
cv2.waitKey(0)
【讨论】:
【参考方案2】:如果您想剪切图像的中心,这一定会有所帮助。问题出在 CROP 函数的参数中。你应该用新图像的角坐标来填充它。写英文对我来说很难,所以如果你不明白的话,请问我
from PIL import Image
image = Image.open(r'image.png')
print(image.size)
width, height = image.size
print(width)
print(height)
newWidth = int(width / 2)
newHeight = int(height / 2)
print(newWidth)
print(newHeight)
left = width - newWidth // 2
upper = height - newHeight // 2
right = left + newWidth
lower = upper + newHeight
img = image.crop((left, upper, right, lower))
img.show()
【讨论】:
以上是关于裁剪图像后无法调用 .show() 函数的主要内容,如果未能解决你的问题,请参考以下文章