gpt4 book ai didi

python - 有没有办法在Python中将多个图像合并为一个图像?

转载 作者:行者123 更新时间:2023-12-02 17:31:47 26 4
gpt4 key购买 nike

我想将多个图像水平合并为一个图像。
我试图通过给定的代码合并图像,但它给出了白色图像?
对于合并图像,我尝试了PIL。

Input1

Input2

Input3

output Image

import sys
from PIL import Image


def append_images(images,bg_color=(255,255,255), aligment='center'):

widths, heights = zip(*(i.size for i in images))


new_width = sum(widths)
new_height = max(heights)


new_im = Image.new('RGB', (new_width, new_height), color=bg_color)

offset = 0
for im in images:
y = 0
if aligment == 'center':
y = int((new_height - im.size[1])/2)
elif aligment == 'bottom':
y = new_height - im.size[1]
new_im.paste(im, (offset, y))
offset += im.size[0]


return new_im
date=input("Enter Date:")
l=['1.jpg','2.jpg','3.jpg']


images = map(Image.open,l)
combo_2 = append_images(images, aligment='center')
combo_2.save('combo_2.jpg')

最佳答案

我更喜欢使用OpenCV&Numpy组合。这意味着使用数组。
下面的代码仅将第一张图片作为起点-高度。您要附加的任何图像将根据高度水平堆叠。这意味着,附加的图像将根据蒙太奇高度调整大小,然后水平堆叠到蒙太奇。

工作代码

import cv2
import numpy as np

image1 = cv2.imread("img1.jpg")[:,:,:3]
image2 = cv2.imread("img2.jpg")[:,:,:3]

class Montage(object):
def __init__(self,initial_image):
self.montage = initial_image
self.x,self.y = self.montage.shape[:2]

def append(self,image):
image = image[:,:,:3]
x,y = image.shape[0:2]
new_image = cv2.resize(image,(int(y*float(self.x)/x),self.x))
self.montage = np.hstack((self.montage,new_image))
def show(self):
cv2.imshow('montage',self.montage)
cv2.waitKey()
cv2.destroyAllWindows()

首先,使用定义HEIGHT的第一张图片初始化类。因此,如果您想要不同的高度,请传递给类调整大小的图像。之后,您可以水平添加图像

用法
>>> m = Montage(image1)
>>> m.append(image2)
>>> m.show()

您的结果是:
enter image description here

但通常它可以使用完全不同的大小

图片1

enter image description here

图片2

enter image description here

蒙太奇

enter image description here

关于python - 有没有办法在Python中将多个图像合并为一个图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55207987/

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