和
我想要导出一个只有红色" Hello"像:
所以我正在运行一个简单的演绎python脚本:
from PIL import Image
import numpy as np
root = '/root/'
im1 = np.asarray(Image.open(root+'1.jpg'))
im2 = np.asarray(Image.open(root+'2.jpg'))
deducted_image = np.subtract(im1, im2)
im = Image.fromarray(np.uint8(deducted_image))
im.save(root+"deduction.jpg")
但是这会回来:
而不是上面的。我究竟做错了什么?我也需要numpy,或者我可以仅使用Pillow
库吗?
它也适用于这样的图像:
我的代码返回:
困惑于为什么它在边缘处如此像素化!
答案 0 :(得分:3)
将第二张图像中不需要的像素设置为0可能更容易吗?
im = im2.copy()
im[im1 == im2] = 0
im = Image.fromarray(im)
似乎对我有效(显然只是因为我使用了你上传的JPG而有更大的文物)
也可以在没有numpy的情况下这样做:
from PIL import ImageChops
from PIL import Image
root = '/root/'
im1 = Image.open(root + '1.jpg')
im2 = Image.open(root + '2.jpg')
def nonzero(a):
return 0 if a < 10 else 255
mask = Image.eval(ImageChops.difference(im1, im2), nonzero).convert('1')
im = Image.composite(im2, Image.eval(im2, lambda x: 0), mask)