如何在Python中不使用OpenCV将PNG图片转换为0、1二进制形式
Python实现PNG转0/1二进制字符(无需OpenCV)
我们可以用Pillow(Python Imaging Library的活跃分支)完成这个需求,无需依赖OpenCV。下面是具体实现步骤:
1. 安装Pillow
先确保已安装Pillow库,未安装则执行:
pip install pillow
2. 实现代码
以下代码会将PNG转为灰度图,再根据阈值把每个像素转换为1(浅色)或0(深色),最终输出每行由0/1组成的字符串:
from PIL import Image def png_to_binary(image_path, threshold=127): # 打开图片并转换为8位灰度模式(像素值0-255,0=黑,255=白) with Image.open(image_path) as img: gray_img = img.convert('L') width, height = gray_img.size binary_lines = [] # 逐行处理像素 for y in range(height): current_line = [] for x in range(width): pixel_value = gray_img.getpixel((x, y)) # 根据阈值判断,大于阈值则为1,否则为0 current_line.append('1' if pixel_value > threshold else '0') binary_lines.append(''.join(current_line)) return binary_lines # 调用示例 if __name__ == "__main__": # 替换为你的PNG图片路径 output_lines = png_to_binary("test_image.png") # 逐行打印结果 for line in output_lines: print(line)
3. 自定义调整
- 反转黑白:若需要黑色显示为
1、白色显示为0,将判断条件改为pixel_value < threshold即可。 - 调整阈值:默认阈值为127,可根据图片明暗修改该值,让转换结果更贴合预期。
内容的提问来源于stack exchange,提问作者Sohaib El Mediouni
相关产品推荐
相关产品推荐

