python - python图像库(PIL)中的getbbox方法不起作用

标签 python python-imaging-library crop bounding-box image-editing

我想通过剪切边框上的白色区域来将图像裁剪成更小的尺寸。我尝试了本论坛中建议的解决方案 Crop a PNG image to its minimum size但是 pil 的 getbbox() 方法返回的是一个与图像大小相同的边界框,即它似乎无法识别周围的空白区域。我尝试了以下方法:

>>>import Image
>>>im=Image.open("myfile.png")
>>>print im.format, im.size, im.mode
>>>print im.getbbox()
PNG (2400,1800) RGBA
(0,0,2400,1800)

我通过使用 GIMP 自动裁剪裁剪图像来检查我的图像是否具有真正的白色可裁剪边框。我还尝试了图形的 ps 和 eps 版本,但运气不佳。
任何帮助将不胜感激。

最佳答案

问题是 getbbox() 从文档中裁剪掉黑色边框:计算图像中非零区域的边界框

enter image description here enter image description here

import Image    
im=Image.open("flowers_white_border.jpg")
print im.format, im.size, im.mode
print im.getbbox()
# white border output:
JPEG (300, 225) RGB
(0, 0, 300, 225)

im=Image.open("flowers_black_border.jpg")
print im.format, im.size, im.mode
print im.getbbox()
# black border output:
JPEG (300, 225) RGB
(16, 16, 288, 216) # cropped as desired

我们可以通过首先使用 ImageOps.invert 反转图像,然后使用 getbbox() 来轻松修复白色边框:

import ImageOps
im=Image.open("flowers_white_border.jpg")
invert_im = ImageOps.invert(im)
print invert_im.getbbox()
# output:
(16, 16, 288, 216)

关于python - python图像库(PIL)中的getbbox方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870876/

相关文章:

python - 使用 tkinter Treeview 小部件显示目录内容

python - 基于日期范围的虚拟变量操作

python - np.nanmean 不在 Dataframe 中工作?

python - RLE8图像支持/用Pillow解压(PIL fork)

ios - 我想知道为什么 UIImagePickerController 裁剪正方形有轻微的偏移,以及如何修复它

python - 使用 pip install、pip list 等时出现不同的错误信息

python - 来自 PyOpengl 缓冲区的 PIL Image.fromstring 大小错误

python - 在没有 freetype 的情况下在 PIL 中使用字体

子图像的 Imagemagick 位置和大小

javascript - 如何使用边界框裁剪图像