I have two images:
and
我想导出一个只有红色“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
图书馆?
Edit:
它也应该适用于这样的图像:
我的代码返回:
很困惑为什么它的边缘如此像素化!
将第二张图像中不需要的像素设置为 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)