【发布时间】:2018-11-02 19:22:47
【问题描述】:
我想将我的黑白图像(.png)转换为二进制数组(黑色为 1 白色为 0)。我已经写了一些代码,但它不工作。错误说:map() 的参数 2 必须支持迭代。 这是我的代码:
from PIL import Image
from resizeimage import resizeimage
import sys
def threshold(col):
s = sum(col)
return int(s > 255 * 3 // 2)
img = Image.open("filename.png")
ratio = float((img.size[1]) / (img.size[0]))
img = resizeimage.resize_cover(img, [100, int(ratio * 100)])
pixels = img.getdata()
binary = list(map(threshold, img))
array2d = [binary[i * img.size[0] : (i+1) * img.size[0]] for i in range(img.size[1])]
print('\n'.join(''.join(map(str, line)) for line in array2d))
图片如下:
【问题讨论】:
-
实际上是黑白的还是有灰色的?
-
不只是黑白,图像只是我用颜料画了一个黑色圆圈,白色背景。
-
用
binary = list(map(threshold, pixels))替换binary = list(map(threshold, img)) -
仍然,我得到一个空列表
-
用
np_img = np.array(img)转换成NumPy 数组怎么样,然后将非零值设置为1np_img[np_img > 0] = 1
标签: python image binary converter