【发布时间】:2020-06-09 12:29:44
【问题描述】:
“结果”图像是通过将“第二个”图像混合到“基础”图像中创建的。 我正在寻找一种从“结果”图像中提取“第二个”图像的方法。
我试过这段代码:
from PIL import Image, ImageChops
from pathlib import Path
HOME = Path().cwd()
img1 = Image.open(HOME / 'base.png')
img2 = Image.open(HOME / 'result.png')
diff = ImageChops.difference(img2, img1)
diff.show()
diff.save(HOME / 'second.png')
并得到了这张"second" 图像作为两者的区别。
不幸的是,在差异中仍然可以看到基础图像中蓝色水平线和红色垂直线的残留物。 Here is an enlarged section
我该如何摆脱这些?提前感谢您的热心帮助。
【问题讨论】:
-
对于您展示的示例,您可能只需将所有蓝色和红色像素转换为白色/灰色。或者更简单,只需将图像转换为灰度。
-
嗨,谢谢你的想法,但这不是我想要的。用数学术语来说,如果我的基础图像的值为 1,结果图像的值为 3,则第二张图像的值为 2,如 1+x=3 -> x = 3-1 但使用 RGBA 上的差异是不正确的,因为我想结果图像不是通过使用添加而是“混合”创建的。所以有一些数学运算进行混合,我正在寻找扭转这些。
标签: python opencv image-processing python-imaging-library