图像剪切的减法和加法

2 投票
1 回答
5360 浏览
提问于 2025-05-01 03:20

我有两张图片。我把第一张从第二张里减去,然后又把这个差值加回到第一张上,最后保存了这张新图片。但是,新图片和原来的图片不一样。为什么会这样呢?下面是代码:

import Image
from PIL import ImageChops

im1 = Image.open("scimg1.png") 
im2 = Image.open("scimg2.png")

diff = ImageChops.subtract(im2, im1)
newim2 = ImageChops.add(im1, diff)
newim2.save("newim2.png")
diff.save("diffimg.png")
暂无标签

1 个回答

0

从我看到的情况来看,im1、im2和diff的像素值数组似乎总是保持在0以上。即使im1的像素值比im2的像素值大,diff的值也不会变成负数。

举个例子,如果im1某个点的像素值是(255,255,255),而im2的像素值是(235,235,235),那么计算出来的diff值会是(0,0,0),虽然实际上255减去235应该是20,但在这里却显示为0。当你把这个0加到im1上时,结果仍然是(255,255,255),而不是(235,235,235)。

另外,diff数组的大小似乎和im1的数组大小是一样的,所以如果im1比im2小,diff图像也会小。不过我不太确定你的情况是否也一样,这取决于你使用的图片。我建议你可以导入numpy,查看一下你自己图片和diff的数组。

撰写回答