【发布时间】:2019-08-22 21:53:47
【问题描述】:
我正在尝试运行这个简单的代码来让它输出图像的图像矩阵? 我希望它输出具有行和列的图像矩阵,以便我可以找到具有非零像素值的第一行/列,以便我可以裁剪......但现在我的主要问题是获取矩阵。
请,谢谢!
我不断收到此错误:
Traceback(最近一次调用最后一次): 文件“pillow_images.py”,第 12 行,在 矩阵 = np.array(im.getdata()).reshape(im.size) ValueError: 无法将大小为 147840 的数组重塑为 (231,160)
import PIL #imports PIL library needed for pillow
from PIL import Image # imports Image class from pillow
import numpy as np
im = Image.open("whitewave.png") #loads in the image
print(im.format, im.size, im.mode) #(PNG, (width,height), Type of image:RGB)
matrix = np.array(im.getdata()).reshape(im.size)
print(matrix)```
【问题讨论】:
-
该错误很好地提示了问题所在。数组的大小是图像大小的四倍(147840 = 231 * 160 * 4)。 PNG 文件还有 3 个颜色通道和 1 个 alpha 通道。
-
看来你的图片在
RGBA,你必须reshape(231,160,4) -
使用
matrix = np.array(im),你就可以得到正确的数组而不需要重新整形。 -
谢谢,你知道有没有办法像 MATLAB 这样以矩阵的形式得到这个?
标签: python image matrix python-imaging-library