gpt4 book ai didi

Python 混合级联图像

转载 作者:太空宇宙 更新时间:2023-11-03 21:32:49 29 4
gpt4 key购买 nike

我正在使用 Python 和 PIL 连接两个图像并尝试移除附加的边界或接缝以获得更平滑自然的图像,没有任何伪影。

def merge_images(image1, image2, mask):

img1 = Image.open(image1)
img2 = Image.open(image2)
mask = Image.open(mask).convert('RGBA')

#mask.show()

height = img1.size[1] + (img2.size[1])
width = img1.size[0]

print(height , width)

#height = img1.size[1]
#width = img1.size[0]+(img2.size[0]/2)

print(height - img1.size[1])

newImage = Image.new("RGB", (width, height), (0,0,0))
newImage.paste(img1, (0 , (height - img1.size[1])))
#newImage.show()
print(newImage.size)
#newImage.paste(img1, ((width-img1.size[0]),0))
newImage.paste(img2, (0 ,0), mask)

return newImage

这是从 Blend Images 引用的

这是上述链接的预期输出:Expected Output

我没有得到相同的结果,并且拼接图像结果中存在相当大的接缝。

来源:

Image1

Image 2

Result

结果与原来相去甚远。我希望移除附加区域中的接缝,并可能移除顶部图像底部的阴影。我猜问题出在掩码上。任何建议都会非常有用

编辑:错过添加蒙版图像 Mask Image

最佳答案

这是我创建的示例,演示了如何使用 alpha 蒙版混合两个图像。大多数导入注意,widthheight 对于所有输入都应该相同。图像已附加到来源,因此可以正确复制。

核心思想是,将 lion 图像的像素与 alpha 相乘,并使用 rest 将其与 taj 图片。这称为加权混合

enter image description here

import cv2
import numpy as np

lion = cv2.imread('lion.png',3)
taj = cv2.imread('taj.png',3)
alpha = cv2.imread('mask.png',0).astype(np.float32)


a_B, a_G, a_R = cv2.split(lion)
b_B, b_G, b_R = cv2.split(taj)

b = (a_B * (alpha/255.0)) + (b_B * (1.0 - (alpha/255.0)))
g = (a_G * (alpha/255.0)) + (b_G * (1.0 - (alpha/255.0)))
r = (a_R * (alpha/255.0)) + (b_R * (1.0 - (alpha/255.0)))
output = cv2.merge((b,g,r))


cv2.imwrite("lionoutput.png", output)

Taj

enter image description here

lion

enter image description here

mask

enter image description here

关于Python 混合级联图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662245/

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