无法在BIL中将BMP图像数据格式化为每像素1位

时间:2014-01-11 19:47:31

标签: python python-imaging-library

我有一个黑白的bmp图像,我需要一次访问1个像素。我在网上找到了以下代码,但不是每个位的值为1或0,而是255或0。

import Image
img = Image.open(filename)
img = img.convert('1')
pix = img.load()

我自己逐个像素地进行转换非常慢。

有人可以告诉我为什么上述方法不起作用吗?

2 个答案:

答案 0 :(得分:2)

你可以像这样转换它:

img.point(lambda x: bool(x))

但为什么你首先需要它是0/1(而不是0/255)?

答案 1 :(得分:-1)

也许numpy是一个很好的解决方案:

<script>

如果您想将其转换回图片:

import numpy as np
from PIL import Image

#here, the image will be a numpy array
img = np.array(Image.open(filename)) / 255.

一点点细节:转换为numpy会翻转x和y。转换回来将恢复原始位置。