4

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

   from PIL import Image

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

   imshow(test_img)

   show()
  1. 它旋转图像(?)
  2. 它不会将其转换为 L (?)

(对不起,我是新手,所以我不能发送图像作为演示)

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

4

2 回答 2

2

由于 和 之间的原点不一致,您的图像被Image旋转 pylab。如果您使用此代码段,图像将不会倒置旋转。

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

瞧!

于 2012-08-03T12:24:04.963 回答
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'
于 2012-08-03T09:37:22.497 回答