2014-11-02 3 views
0

두 장의 이미지가 있습니다. 나는 두 번째에서 처음으로 빼고 다시 첫 번째 이미지에 차이를 더하고 이미지를 저장했습니다. 그러나 새로운 이미지는 원본 이미지와 다릅니다. 이게 왜 그렇게? 당신이 IM2에서 이미지를 뺀하지만 IM1에 다시 추가되기 때문에입니다Imagechops 빼기 및 덧셈

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") 

답변

0

같다 : 여기

는 고정 코드입니다 im1의 픽셀 값이 im2의 픽셀 값보다 큽니다.

예를 들어 im1에 대한 한 지점의 픽셀 값이 (255,255,255)이고 im2의 경우 (235,235,235) 255-235 = -20이더라도 diff 값은 (0,0,0)이됩니다. 그런 다음 im1에 diff 값 0을 추가하려고하면 픽셀 값이 (255,255,255)가되고 (235,235,235)가 아닙니다.

또한 diff 배열은 im1의 배열 크기와 일치하는 것으로 보이므로 im1이 im2보다 작 으면 diff 이미지도 작아집니다. 그러나 나는 당신이 어떤 이미지를 사용하는지에 따라 당신과 똑같이 될지 잘 모르겠다. 나는 numpy를 가져 와서 자신의 그림과 diff의 배열을 볼 것을 권한다.

-2

: 다음은 코드입니다. 코드가 올바르게 작동하면 문제가 해결됩니다. 은 diff 값이 0도 경우 아래로 간다 결코 것처럼

내가 IM1, IM2에서 픽셀 값의 배열을보고하고 diff를 할 때 볼 수있는에서
import Image 
from PIL import ImageChops 

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

diff = ImageChops.subtract(im2, im1) 
newim2 = ImageChops.add(im2, diff) 
newim2.save("newim2.png") 
diff.save("diffimg.png") 
+0

im2 - im1 = diff; => im2 = im1 + diff; 그래서, im1에 diff를 추가 한 후에 im2를 되 찾아야합니다. 내가 잘못? – user3286661

+0

이렇게 생각하십시오. image2에서 image1을 빼면 차이가납니다. 원본 이미지를 얻으려면 다시 추가해야합니다. – GKBRK

+0

예. 정확하게 차이를 첫 번째 이미지에 추가합니다. 9-5 = 4; 여기서 차이는 4입니다. Im1은 5이고 Im2는 9입니다. 9를 얻으려면 4 인 차이를 추가해야합니다. 5는 Im1입니다. – user3286661