如何用Python或Scilab将黑白图像转换为像素值矩阵
将黑白图像转换为灰度值矩阵的实现方法
Python 实现
方法1:使用 PIL + NumPy
- 安装依赖:
pip install pillow numpy - 代码示例:
from PIL import Image import numpy as np # 加载图像并转为8位灰度模式 img = Image.open("your_image.png").convert("L") # 转换为NumPy矩阵,形状为(高度, 宽度),元素值范围0-255 gray_matrix = np.array(img) # 验证输出 print("矩阵形状(高度, 宽度):", gray_matrix.shape) print("左上角5x5灰度值:\n", gray_matrix[:5, :5])
- 说明:
convert("L")会将图像转为单通道灰度图,生成的NumPy数组行对应图像高度,列对应宽度,0代表纯黑,255代表纯白。
方法2:使用 OpenCV
- 安装依赖:
pip install opencv-python numpy - 代码示例:
import cv2 import numpy as np # 直接以灰度模式读取图像,返回矩阵形状为(高度, 宽度) gray_matrix = cv2.imread("your_image.png", cv2.IMREAD_GRAYSCALE) # 验证输出 print("矩阵形状:", gray_matrix.shape) print("灰度值范围:", np.min(gray_matrix), "-", np.max(gray_matrix))
- 说明:
cv2.IMREAD_GRAYSCALE参数会跳过彩色通道,直接读取为8位灰度矩阵,无需额外转换,值范围同样是0-255。
Scilab 实现
- 代码示例:
# 读取图像文件 img = imread("your_image.png"); # 若图像为彩色,转为灰度(黑白图像可省略此步) gray_img = rgb2gray(img); # 灰度图本身即为目标矩阵,形状为(高度, 宽度) gray_matrix = gray_img; # 验证输出 disp("矩阵形状(高度, 宽度):", size(gray_matrix)); disp("左上角5x5灰度值:", gray_matrix(1:5, 1:5));
- 说明:
rgb2gray会将彩色图像转为单通道灰度图,生成的矩阵行对应图像高度,列对应宽度,灰度值0(黑)到255(白)。
内容的提问来源于stack exchange,提问作者N1x1T4
相关产品推荐
相关产品推荐

