Python Can';t将BMP图像数据格式化为PIL中每像素1位

Python Can';t将BMP图像数据格式化为PIL中每像素1位,python,python-imaging-library,Python,Python Imaging Library,我有一个黑白bmp图像,我需要一次访问1个像素。我在网上找到了以下代码,但不是每个位的值都是1或0,而是255或0 import Image img = Image.open(filename) img = img.convert('1') pix = img.load() 我自己一个像素一个像素的转换速度非常慢 有人能告诉我为什么上面的方法不起作用吗?你可以这样转换它: img.point(lambda x: bool(x)) 但是为什么首先需要将其设置为0/1(而不是0/255)?也许n

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

import Image
img = Image.open(filename)
img = img.convert('1')
pix = img.load()
我自己一个像素一个像素的转换速度非常慢


有人能告诉我为什么上面的方法不起作用吗?

你可以这样转换它:

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

但是为什么首先需要将其设置为0/1(而不是0/255)?

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

import numpy as np
from PIL import Image

#here, the image will be a numpy array
img = np.array(Image.open(filename)) / 255.
如果要将其转换回图像:

img = Image.fromarray(img)

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

谢谢,我试试看。我需要它是二进制的,因为我要将数据写入LCD屏幕。这里不需要lambda,你应该可以只做
img.point(bool)