2017-01-02 12 views
2

이진 화상을 각 화소가 1 또는파이썬 반전 바이너리 이미지; .invert()는 I

import struct 
from PIL import Image 
import numpy 

... 

i1 = Image.frombytes('1', (64, 63), r[3], 'raw') 

0 어떻게 이미지를 반전 할 수있다 64x63 사이즈 실패? 이것은 오류가 발생, 그러나

from PIL import Image 
import PIL.ImageOps  

i1 = PIL.ImageOps.invert(i1) 

: 편집

내가 제안 된 솔루션을 시도

raise IOError("not supported for this image mode") 
IOError: not supported for this image mode 

그리고 이것은, 내가 생각 때문이다 이미지가 RGB도 아니고 L (그레이 스케일)도 아닙니다. 대신, 바이너리 이미지의 각 픽셀이 아니라 파일 중 하나가 0 또는

+0

가능한 [PIL (Python-Imaging)을 사용하여 이미지의 색상을 반전하는 방법?] (http://stackoverflow.com/questions/2498875/how-to-invert-colors-of-image-with-pil) -python-imaging) – 9000

+0

의심스러운 경우 Google을 먼저 선택하십시오. – 9000

+0

제안 해 주셔서 감사합니다! 그러나 이진 이미지가 지원되지 않는다는 PIL의 오류를 받았지만이 작업을 시도했습니다. – wayway

답변

1

당신이 NumPy와 배열에 i1 변환하고자하는 경우 1. 당신은 그냥 할 수있다

i1 = 1 - numpy.asarray(i1) 
+0

i1은 숫자가없는 배열로 보입니다. Image.frombytes를 사용하여 i1을 만듭니다. Type iRror : - 'int'및 'Image'에 대해 지원되지 않는 피연산자 유형 – wayway

+1

@WayWay이 문제를 처리하기 위해 코드를 편집했습니다. 베개'Image' 객체로 계속 작업해야하는 경우 – bobo

-1
from PIL import Image 
import PIL.ImageOps  

image = Image.open('your_image.png') 

inverted_image = PIL.ImageOps.invert(image) 

inverted_image.save('your_image_inv.png') 
+0

뒤에 Image.fromarray (i1)을 사용할 수 있습니다. 답변이 정확할 수도 있지만 코드에 대한 설명을 추가하면 개선 될 수 있습니다. . – Mikkel

0

왔어요 똑같은 문제에 numpy를 사용하는 데 문제가없는 해결책이 있습니다.
당신은 ImageMath를 사용할 수 있습니다

from PIL import ImageMath 
i2 = ImageMath.eval('255-(a)',a=i1) 

당신이 (PIL에서 모드 1) 바이너리를 반전 할 수 있습니다이 방법은 이미지를.
자세한 내용은 here을 참조하십시오.