PIL open.image&转换问题

时间:2012-08-03 09:26:43

标签: python image python-imaging-library

PIL Image.open.convert(L)给我一个奇怪的结果:

   from PIL import Image

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

   imshow(test_img)

   show()
  1. 旋转图像(?)
  2. 它不会将其转换为L(?)
  3. (对不起,我是新手所以我不能发送图像作为演示)

    为什么(如果你有想法)?

2 个答案:

答案 0 :(得分:2)

旋转是因为PIL和matplotlib不使用相同的约定。如果你执行test_img.show(),它将不会旋转图像。 或者,您可以在使用matplotlib显示之前将图像转换为numpy数组:

imshow(np.asarray(test_img))

对于.convert('L')方法,它对我有用:

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

答案 1 :(得分: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()

Etvoilà!