我有一个黑白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.转换回来将恢复原始位置。