【发布时间】:2025-12-17 17:00:02
【问题描述】:
我正在做一个图像分割项目。
我有 2 个 RGBA 图像。 第一张图片是要分割的图片:
第二个是包含不同透明度值的红色方块的图像:
我想叠加两张图片,但我做不到。我尝试了两种方法:
一个使用openCV“添加”方法,另一个使用PIL“混合”方法。
from PIL import Image as PImage
if __name__ == '__main__':
image_A = read_image(r"C:\Users\francois.bock\Desktop\013.jpg", rgb=True)
# Add alpha channel
image_A = np.concatenate((image_A, np.full((256, 256, 1), fill_value=255, dtype=np.uint8)), axis=2)
#Create image B
image_B = np.full((256, 256, 4), fill_value=[0, 0, 0, 0], dtype=np.uint8)
for i in range(0, 20):
for j in range(0, 20):
image_B[i, j] = [255, 0, 0, 100]
for i in range(50, 70):
for j in range(50, 70):
image_B[i, j] = [255, 0, 0, 127]
for i in range(50, 70):
for j in range(0, 20):
image_B[i, j] = [255, 0, 0, 255]
image_A_convert = PImage.fromarray(image_A)
image_B_convert = PImage.fromarray(image_B)
# Test with blend
img_add = PImage.blend(image_A_convert, image_B_convert, 0.0)
img_add.save("testrgba.png", "PNG")
# Test with open CV
img_add = cv2.add(image_A,image_B)
img_add = PImage.fromarray(img_add)
img_add.save("testrgba.png", "PNG")
混合结果:
打开简历的结果
正如我们所见,它运行得并不好。
使用混合方法,第一张图像太淡了。 使用 openCV 方法,第一张图像还可以,但我们失去了第二张图像每个正方形的透明度。
我想保留相同的第一个图像,但透明度特定于第二个图像的每个正方形。
任何提示或提示?
【问题讨论】:
标签: python opencv python-imaging-library