python-3.x 将单色图像转换为二进制字符串的最佳方法是什么?

nkhmeac6  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(120)

目前,我的计划是使用numpy.ndarray.tolist(numpy.asarray(img)),每隔三个元素迭代一次(因为每个像素被表示为三个RGB整数),检查它是否为零以生成二进制字符串。我相信一定有更好的办法,我只是不确定...

2ul0zpep

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)


这给你一个二进制数组!

6tdlim6h

6tdlim6h2#

另一种简洁的方法是使用Pillow和numpy:

image = Image.open(image_path).convert('1')
bytes(np.packbits(np.array(image)))

字符串

相关问题