【问题标题】:How to compose multiple rectangles of different sizes into one using Python?如何使用 Python 将多个不同大小的矩形组合成一个?
【发布时间】:2020-05-17 07:42:37
【问题描述】:

我想做的事: 我有一个 png 图像文件,我想制作它的多个副本(每个都缩放到随机比例并旋转到随机度数),最后我需要将所有图像对象组合成一个大 png 文件。

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

我的问题: 我找不到完成最终过程的方法:作曲。

感谢任何帮助。我对编程比较陌生(我正在学习 Python),所以如果你能提供一些关于如何做的细节,那将是最好的。

提前致谢。

【问题讨论】:

  • 我的回答或其他人是否解决了您的问题?如果是这样,请考虑接受它作为您的答案 - 通过单击计票旁边的空心对勾/复选标记。如果没有,请说出什么不起作用,以便我或其他人可以进一步为您提供帮助。谢谢。 meta.stackexchange.com/questions/5234/…

标签: python image rectangles


【解决方案1】:

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

其次,有多种“合成”图像的方法。您可能意味着创建一个输出图像,其中所有输入图像从左到右彼此相邻排列。您还可能意味着创建尽可能小的图像,以将所有旋转的图像组合在一起而不会重叠(一项艰巨的任务)。也不清楚您正在处理的 PNG 图像是否具有 alpha 通道(即部分透明)。

如果您使用 Pillow 并且只需将图片并排排列,那么this 链接应该可以回答您的问题。

这是你的意思吗?

【讨论】:

    【解决方案2】:

    您应该能够像我在this 回答中那样使用带有蒙版的paste() 将您的小图像合成到背景画布上。

    当您 rotate() 矩形时,您需要将 fill colour 设置为透明,否则旋转形状周围的空白区域将显示为黑色......当您 paste() 时,会破坏下面的任何内容。

    【讨论】:

      【解决方案3】:

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

      一旦你完成了扩充,你想使用img_to_array函数在numpy数组中使用它们,你可以使用它

      from keras.preprocessing import image
      
      # Say your image is stored in the variable img
      
      x = image.img_to_array(img)
      

      一旦你对所有的人都这样做了,你就可以开始将它们与一些numpy.zeros 连接起来进行缩进。

      然后直接在numpy数组上使用函数save_img将这张图片保存到一个路径中。这可以按如下方式完成。

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

      你说你是编程新手,所以只是为了基本介绍,keras 实际上在人工智能中用于深度学习相关的东西。对于这样的东西,这些预处理功能实际上是惊人的。我还附上了他们正在使用的屏幕截图。

      编辑:这是我很久以前用来理解它们的有用link

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-08
        • 2016-10-27
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2011-08-01
        • 1970-01-01
        • 2015-07-01
        相关资源
        最近更新 更多