目前,我的计划是使用numpy.ndarray.tolist(numpy.asarray(img)),每隔三个元素迭代一次(因为每个像素被表示为三个RGB整数),检查它是否为零以生成二进制字符串。我相信一定有更好的办法,我只是不确定...
numpy.ndarray.tolist(numpy.asarray(img))
2ul0zpep1#
Numpy和Pillow是非常好的朋友。你可以将枕头图像转换为numpy数组,只需提供图像作为参数:
from PIL import Image import numpy as np path = "path\to\image.jpg" image_file = Image.open(path) bilevel_img = image_file.convert('1') data_array = np.array(bilevel_img) print(data_array)
字符串请注意,“1”模式是双电平的,因此您将得到一个True / False数组。使用灰度模式可能会更好,然后在您定义的阈值下进行二水平化:
gray = np.array(img.convert("L")) print(gray) threshold = 128 # cutoff between 0 and 255 bilevel_array = (gray > threshold).astype(int) print(bilevel_array)
型这给你一个二进制数组!
6tdlim6h2#
另一种简洁的方法是使用Pillow和numpy:
image = Image.open(image_path).convert('1') bytes(np.packbits(np.array(image)))
字符串
2条答案
按热度按时间2ul0zpep1#
Numpy和Pillow是非常好的朋友。你可以将枕头图像转换为numpy数组,只需提供图像作为参数:
字符串
请注意,“1”模式是双电平的,因此您将得到一个True / False数组。
使用灰度模式可能会更好,然后在您定义的阈值下进行二水平化:
型
这给你一个二进制数组!
6tdlim6h2#
另一种简洁的方法是使用Pillow和numpy:
字符串