1

私は(PythonでPILを使用して)画像をブレンドして、1つの結合画像を形成しようとしています。ただし、両方の画像を適切にブレンドするために、アルファは 0.5 のままにしています。これにより、画像が半透明になり、不透明度が失われます。とにかく、不透明度を失うことなく2つの画像をブレンドできますか? コード:

import Image
a = Image.open("image1.png")
b = Image.open("image2.png")
c = Image.blend(a,b,0.5)
c.save("abc.png", "PNG")

これらは画像です: (私は新しいユーザーであり、画像や 2 つ以上のハイパーリンクを投稿することは許可されていません。したがって、リンクを配置しています。)

画像1 - http://i.stack.imgur.com/EphiR.png

abc - http://i.stack.imgur.com/useql.png

4

1 に答える 1

0

これは、改善できる簡単で汚いバージョンです。

from PIL import Image
from PIL import ImageChops
from PIL import ImageOps
import numpy as np

a = Image.open("a.png")
b = Image.open("b.png")

# Finds the difference between the two images. Then inverts so differences are black.
diff = ImageOps.invert(ImageChops.difference(a, b)) 
# Then we use numpy to convert black to red. 
image = diff.convert('RGBA')
data = np.array(image)

r1,g1,b1 = 0,0,0
r2,g2,b2 = 255,0,0

red, green, blue = data[:,:,0], data[:,:,1], data[:,:,2]
mask = (red == r1) & (green == g1) & (blue == b1)
data[:,:,:3][mask] = [r2, g2, b2]
# Then we convert the array back to an image.
overlay = Image.fromarray(data)
# And blend with the original. 
imgblend = ImageChops.add(a.convert('RGBA'), overlay,2)
imgblend.show()
于 2013-08-20T18:12:54.480 に答える