我正在使用以下python代码旋转图像:
from PIL import Image
img = Image.open('banana.jpg')
rotated = img.rotate(10)
rotated.save('banana-rotated.jpg')
这使得以下转变:
如您所见,背景为黑色。 This question询问如何使用特定颜色填充背景。但是,我想用图像的颜色填充背景。因为我需要旋转许多图像,所以我不想将背景设置为固定颜色。
是否有某种方法在边缘扩展图像,使用从图片中推断出来的颜色?理想情况下,如果图像没有统一的背景,这也可以使用。
答案 0 :(得分:1)
这可以帮助:https://pillow.readthedocs.io/en/5.2.x/releasenotes/5.2.0.html#image-rotate
5.2.0及更高版本,fillcolor
中添加了一个名为Image.rotate
的新命名参数。此颜色指定要在旋转图像之外的区域中使用的背景颜色。
image.rotate(45, fillcolor='white')
如果图像旋转了90,180,270以外的x度,可能会有所帮助
答案 1 :(得分:0)
这不是很好,但你总是可以用原始边框的平均颜色填充边框
image.rotate(5, fillcolor=tuple(np.mean(np.array(image)[0,:], axis=0).astype(int)))