【发布时间】:2018-12-11 23:25:48
【问题描述】:
我刚刚开始在 python 中使用 PIL,我需要帮助来检测照片并在单个白色背景上裁剪出不同大小的多个图像。
我用过Image.crop 和ImageChop.difference,但只裁剪出一张图片。
def trim(im):
bg = Image.new(im.mode, im.size, im.getpixel((0,0)))
diff = ImageChops.difference(im, bg)
diff = ImageChops.add(diff, diff, 2.0, -100)
bbox = diff.getbbox()
if bbox:
return im.crop(bbox)
else:
print("No image detected")
image1 = Image.open('multiple.jpg')
image2 = trim(image1)
image2.show()
【问题讨论】:
-
可能会循环你正在做的事情并传递不同的图像?
-
最好分享你的代码,见How do I ask a good question?
-
您要从白色背景裁剪的图像是否都相同大小?如果是这样,您可以将图像分成相等的大小,然后循环遍历图像并裁剪它。否则,您可以添加像素偏移以在列表中进行裁剪。例如,如果您的图像为 900 像素,并且您希望每 300 像素裁剪一次图像,您可以在 0-299 像素、300-599 像素和 600-899 像素处裁剪图像
-
请澄清您所说的“在白色背景上裁剪出多个图像”是什么意思。另外,这与将它们作为不同文件打开有什么关系?
-
您的意思是您只有一个文件,就像扫描仪的平台上排列的 6 张图像一样?如何向我们展示输入和预期输出?
标签: python image python-imaging-library crop removing-whitespace