如何使用 Scikit-image 将透明 png 图像与另一个图像合并

hip*_*ido 2 python image-processing python-imaging-library scikit-image

这基本上与此处发布的问题相同:如何使用 PIL 将透明 png 图像与另一个图像合并,但使用 scikit-image 而不是 PIL。我的意思是将 png 粘贴在背景图像的顶部,并保持其透明度。另外,如果真的有办法做到这一点,我想知道哪个更快(PIL 或 scikit-image)。谢谢。

use*_*410 6

读取两张图片并使用公式相加 img1*alpha + img2*(1-alpha)

import numpy as np
from matplotlib import pyplot as plt
import skimage.io

img1 = skimage.io.imread('Desert.jpg')
img2 = skimage.io.imread('Penguins.jpg')

img3 = np.ubyte(0.7*img1 + 0.3*img2)

plt.imshow(img3)
Run Code Online (Sandbox Code Playgroud)

alpha 合并图像

另一种选择是使用两个图像的 alpha 通道作为掩码,如下所示

import numpy as np
from matplotlib import pyplot as plt
import skimage.io

img1 = skimage.io.imread('img1.png')
img2 = skimage.io.imread('img2.png')

mask1 = img1.copy()
mask2 = img2.copy()

mask1[:,:,0] = mask1[:,:,3]
mask1[:,:,1] = mask1[:,:,3]
mask1[:,:,2] = mask1[:,:,3]

mask2[:,:,0] = mask2[:,:,3]
mask2[:,:,1] = mask2[:,:,3]
mask2[:,:,2] = mask2[:,:,3]

img3 = np.bitwise_or(np.bitwise_and(img1, mask1),np.bitwise_and(img2, mask2)) ;
plt.subplot(2,2,1)
plt.imshow(img1)
plt.subplot(2,2,2)
plt.imshow(img2)
plt.subplot(2,2,3)
plt.imshow(img3)
Run Code Online (Sandbox Code Playgroud)

使用 alpha 蒙版

  • 问题是关于将 *"transparent PNG"* 与另一个图像合并,但您的答案使用了 2 个不支持透明度的 JPEG... (2认同)