gpt4 book ai didi

python - 将许多小图像连接成一个大图像

转载 作者:行者123 更新时间:2023-12-05 07:11:51 24 4
gpt4 key购买 nike

我有一个问题。比如我有3张图片(50x50px),我需要将这些图片合成一张图片(比如输出为500x500px)。我的问题是每次水平填充3张图像时,我不知道如何垂直组合图像。就这样一步一步来。现在我只知道如何填写两条线(一次水平,一次垂直)。我会很高兴你的任何帮助。谢谢!下面是执行我需要的代码,但我还希望能够为新的行或列调整图像的大小:

img = 'path_to_image'
new_im = Image.new('RGB', (400, 400))
for x in range(0, 400, img.width):
for y in range(0, 400, img.height):
new_im.paste(img, (x, y))

最佳答案

你是说这样吗?

import numpy as np
img_1 = np.ones((2, 2))
img_2 = np.ones((2, 2)) * 2
img_3 = np.ones((2, 2)) * 3

img = np.hstack([img_1, img_2, img_3])
# array([[1., 1., 2., 2., 3., 3.],
# [1., 1., 2., 2., 3., 3.]])

new_shape = np.array([6, 12])
new_img = np.tile(img, reps=new_shape // np.array(img.shape))
# array([[1., 1., 2., 2., 3., 3., 1., 1., 2., 2., 3., 3.],
# [1., 1., 2., 2., 3., 3., 1., 1., 2., 2., 3., 3.],
# [1., 1., 2., 2., 3., 3., 1., 1., 2., 2., 3., 3.],
# [1., 1., 2., 2., 3., 3., 1., 1., 2., 2., 3., 3.],
# [1., 1., 2., 2., 3., 3., 1., 1., 2., 2., 3., 3.],
# [1., 1., 2., 2., 3., 3., 1., 1., 2., 2., 3., 3.]])

如果你想额外调整你的图像大小可能this answer可能对你有帮助。

此方法与您如何获取 img 无关。重要的是,您必须确保初始图像的所有组合都会加起来形成最终形状。

如果您有形状为 50x50 的图像和 500x500 的最终形状,并且您总是将其中的 2、3 或 4 个组合在一起,您有:

  • 500/(2*50) = 5
  • 500/(3*50) = 3.33
  • 500/(4*50) = 2.5

所以这对你不起作用。您有两个选择,要么裁剪不合适的像素,要么调整生成图像的大小。

  • 500/(2*50) = 5
  • 500/(3*50) = 3.33 -> 4,调整大小/裁剪 500x600 至 500x500
  • 500/(4*50) = 2.5 -> 3,调整大小/裁剪 500x600 到 500x500
import numpy as np
img_1 = np.ones((2, 2))
img_2 = np.ones((2, 2)) * 2
img_3 = np.ones((2, 2)) * 3
img_4 = np.ones((2, 2)) * 4
img_list = np.array([img_1, img_2, img_3, img_4])

# Get random combination of 2-4 images
img_dx_rnd = np.random.choice(np.arange(4), np.random.randint(2, 5), replace=False)
img = np.hstack([*img_list[img_dx_rnd]])

new_shape = np.array([6, 12])
reps = np.ceil(new_shape / np.array(img.shape)).astype(int)
new_img = np.tile(img, reps=reps)

# Cropping
new_img = new_img[:new_shape[0], :new_shape[1]]

# Resizing
from skimage.transform import resize
new_img = resize(new_img, new_shape)

关于python - 将许多小图像连接成一个大图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60597402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com