我正在尝试将两个图像添加在一起。
当我在 GIMP 中这样做时,使用“添加”图层模式,我得到以下所需的输出。
现在,我正在尝试在 Python 中执行此操作,但是我无法使其正常工作。根据 gimp 文档,据我了解,加法公式只是每个像素的加法,最大值设置为 255。
加法模式方程:E = min(( M + I ), 255)
我尝试在 Python 中应用它,但输出看起来不同。如何在 Python 中获得与 gimp 添加层混合模式相同的输出?
我的尝试:
# Load in the images
diffuse = cv2.imread('diffuse.png')
reflection = cv2.imread('reflection.png',)
# Convert BGR to RGB
diffuse = cv2.cvtColor(diffuse, cv2.COLOR_BGR2RGB)
reflection = cv2.cvtColor(reflection, cv2.COLOR_BGR2RGB)
# Covnert to uint64 so values can overflow 255
diffuse = diffuse.astype('uint64')
reflection = reflection.astype('uint64')
added = diffuse + reflection # actually add
# clamp values above 255 to be 255
added[added > 255] = 255
# display
im = Image.fromarray(added.astype('uint8'))
im.save('blended_python.png')
现在,这看起来非常相似,但与 GIMP 添加相比,它实际上太亮了。只需在新选项卡和它们之间的 alt+tab 中打开两者,差异就会变得明显。
如何获得与 GIMP 完全相同的结果?我尝试使用 Python-fu 或 gimp 批处理渲染(因为我有成千上万的图像想要像这样混合),但我也无法让它工作。