将图像转换为位图

新手上路,请多包涵

我正在尝试为字母图像创建位图,但没有得到想要的结果。我开始处理图像已经有几天了。我试图读取图像,创建一个 numpy 数组并将内容保存在文件中。我写了下面的代码:

 import numpy as np
from skimage import io
from skimage.transform import resize

image = io.imread(image_path, as_grey=True)
image = resize(image, (28, 28), mode='nearest')
array = np.array(image)
np.savetxt("file.txt", array, fmt="%d")

我正在尝试使用如下链接中的图像:

字母“e”

我试图创建一个 0 和 1 的数组。其中 0 代表白色像素,1 代表黑色像素。然后,当我将结果保存在文件中时,我可以看到字母格式。

谁能指导我如何获得此结果?

谢谢你。

原文由 Leonardo Burrone 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 798
2 个回答

检查这个:

 from PIL import Image
import numpy as np

img = Image.open('road.jpg')
ary = np.array(img)

# Split the three channels
r,g,b = np.split(ary,3,axis=2)
r=r.reshape(-1)
g=r.reshape(-1)
b=r.reshape(-1)

# Standard RGB to grayscale
bitmap = list(map(lambda x: 0.299*x[0]+0.587*x[1]+0.114*x[2],
zip(r,g,b)))
bitmap = np.array(bitmap).reshape([ary.shape[0], ary.shape[1]])
bitmap = np.dot((bitmap > 128).astype(float),255)
im = Image.fromarray(bitmap.astype(np.uint8))
im.save('road.bmp')

该程序采用 rgb 图像并将其转换为 numpy 数组。然后它将它分成 3 个向量,每个通道一个。我使用颜色向量创建一个灰色向量。之后它用 128 比较元素,如果低于写入 0(黑色),否则为 255。下一步是重塑并保存。

道路.jpg道路.bmp

原文由 prometeu 发布,翻译遵循 CC BY-SA 3.0 许可协议

你可以用枕头

from PIL import Image

img = Image.open("haha.jpg")
img = img.tobitmap()

原文由 Aadish Goel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题