2012-08-03 3 views
4
변환

PIL Image.open.convert (L) 나에게 이상한 결과 제공 :PIL open.image 및 문제

from PIL import Image 

    test_img = Image.open('test.jpg').convert('L') 

    imshow(test_img) 

    show() 
  1. 그것이 이미지를 회전
  2. 는 변환하지 않습니다 (?)를 그것은 L에서 (?)

(죄송합니다, 나는 그래서 데모로 이미지를 전송할 수없는 새로운 해요)

왜 (당신은 아이디어가있는 경우)?

+0

코드에서 이미지를 회전해야하는 이유가 없습니다. 변환은 픽셀 값에 영향을 미치지 만 이미지는 변환하지 않습니다. 이것은 테스트 한 모든 이미지에서 발생합니다. –

+0

회전하려는 이미지에 이상한 비트의 EXIF ​​데이터가있을 수 있습니다. https://github.com/kylefox/python-image-orientation-patch – girasquid

+0

@ user1573642 데모로 이미지를 보낼 수 없다면 링크를 제공하십시오. 문제를 보여주는 이미지. 이 방법은 더 많은 평판을 가진 다른 사용자가 아마도 귀하의 질문을 편집하고 당신을 위해 질문에 그 이미지를 넣을 것입니다. 당신이 질문하고자하는 이미지에 대해 저에게 알려 주시면 도와 드리겠습니다. – Pshemo

답변

2

회전은 PIL과 matplotlib이 같은 규칙을 사용하지 않기 때문입니다. test_img.show()를 실행하면 이미지가 회전하지 않습니다. 또는 당신이하기 matplotlib로 표시하기 전에 NumPy와 배열에 이미지를 변환 할 수 있습니다 다음 .convert ('L') 방법으로

imshow(np.asarray(test_img)) 

, 나를 위해 작동합니다

test_img = Image.open('test.jpg').convert('L') 
print test_img.mode 
# 'L' 
2

귀하의 이미지입니다 원점 불일치로 인해 회전 된 축은 Imagepylab입니다. 이 스 니펫을 사용하면 이미지가 거꾸로 뒤집어지지 않습니다.

import pylab as pl 
import Image 

im = Image.open('test.jpg').convert('L') 
pl.imshow(im, origin='lower') 
pl.show() 

그러나 이미지는 흑백으로 표시되지 않습니다. 이렇게하려면, 당신은 그레이 스케일 색상 맵을 지정해야합니다

import pylab as pl 
import Image 
import matplotlib.cm as cm 

im = Image.open('test.jpg').convert('L') 
pl.imshow(im, origin='lower', cmap=cm.Greys_r) 
pl.show() 

잇 봐라!