如何使用Python将图像转换为[1,0,0,1,0]格式的像素数组?
Python 二值图像转01矩阵实现方案
直接通过OpenCV+Numpy即可实现需求,步骤如下:
- 先安装依赖库
pip install opencv-python numpy - 完整可运行代码
import cv2 import numpy as np # 以灰度模式读取目标图像 img = cv2.imread("heart.png", 0) # 二值化分割黑白像素:阈值设为127,灰度<127判定为黑,≥127判定为白 # 如果输出的0/1映射和需求相反,把cv2.THRESH_BINARY替换为cv2.THRESH_BINARY_INV即可 _, binary_img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY) # 像素值映射:白色(255)转1,黑色(0)转0,转为Python列表格式 matrix = (binary_img // 255).astype(int).tolist() # 按照要求的格式拼接输出文本 output_lines = [] for i, row in enumerate(matrix): line = f"[{','.join(str(num) for num in row)}]" if i != len(matrix) - 1: line += "," output_lines.append(line) final_output = "\n".join(output_lines) # 打印结果,也可写入本地文件 print(final_output) # 写入文件示例 # with open("matrix_result.txt", "w", encoding="utf-8") as f: # f.write(final_output)
可选调整项
- 如果图像边缘有杂色噪点,可以在二值化前加一行高斯模糊去噪,避免杂点生成错误的0/1值:
img = cv2.GaussianBlur(img, (3, 3), 0) - 如果需要固定输出尺寸(比如和示例一致输出10*10的矩阵),可以在读取图像后先做缩放:
img = cv2.resize(img, (10, 10))
内容的提问来源于stack exchange,提问作者OrbisX
相关产品推荐
相关产品推荐

