如何使用Python将多个不同大小的矩形合成为一个?

问题描述 投票:0回答:1

我想做什么我有一个png图片文件,我想把它制作成多个副本(每个副本按随机比例缩放,随机旋转),最后我需要把所有的图片对象组成一个大的png文件。

我的思路是:在缩放和旋转图像后,我需要检测每个小png图像对象的最小边界框(矩形),然后将所有矩形组成一个大矩形(最终的大png文件)。

我的问题:我找不到办法做最后的流程:作曲。

希望能得到任何帮助。我对编程比较陌生(我正在学习Python),所以如果你能给一些详细的操作方法,那将是最好的。

先谢谢你了。

python image rectangles
1个回答
0
投票

所以这里的问题缺少了一些细节,难以回答。首先,你加载图像的方式。我假设你使用的是 Pillow 图像库,但你也可以很容易地使用(例如) imageio 将图像加载到 numpy 数组,或者直接使用内置的 open 并将结果放入一堆 lists.

其次,"合成 "图像的方法有很多。你可以指创建一个输出图像,所有的输入图像从左到右排列在一起。你也可以是指创建一个尽可能小的图像,把所有旋转的图像都放在一起而不重叠(这是一个非常困难的任务)。也不清楚你所处理的PNG图像是否有alpha通道(即部分透明)。

如果你正在使用 Pillow,并且你只需要将图像排列在一起,那么就可以使用 这个 链接应该能回答你的问题。

你是这个意思吗?


0
投票

你应该可以使用 paste() 带着面具,就像我在 这个 答案是将您的小图像合成到背景画布上。

当您 rotate() 您的矩形,您将需要设置 fill colour 为透明的,否则你旋转的形状周围的空白区域会显示为黑色......并且当你 paste().


0
投票

最好的方法是使用 keras.preprocessing.image在这个答案中,我使用的是你已经做了你提到的图像增强,所以我将为你处理 "组成 "答案。

一旦你已经做了增强,你想在numpy数组中使用它们,使用的是 img_to_array 函数,您可以将其用作

from keras.preprocessing import image

# Say your image is stored in the variable img

x = image.img_to_array(img)

一旦你做到这一点,基本上你就可以开始连接他们说,用一些 numpy.zeros 缩进。

然后使用函数 save_img 直接在numpy数组上保存这个图像到一个路径。可以按如下方法实现。

image.save_img('to the path you want', x)

你说你是编程新手,所以只是为了基本入门keras其实在人工智能中是用于深度学习相关的东西。这些预处理功能其实很神奇,对于这样的东西。我也附上了它们使用时的截图。

ResNeXt in use

编辑:这里有一个有用的 联系 我很早以前就用过的,来理解他们。

© www.soinside.com 2019 - 2024. All rights reserved.