Python 什么';numpy数组中数字的含义是什么?
在Python 什么';numpy数组中数字的含义是什么?,python,image-processing,numpy,scipy,Python,Image Processing,Numpy,Scipy,在numpy中,array方法可以将图像转换为大数组,问题是,这个数组中的数字是什么意思?(RGB值?灰度值?) 此外,当我将图像转换为模式“1”时 我发现im_arr数组不仅显示0和255: array([[170, 170, 170, ..., 255, 255, 255], [255, 248, 255, ..., 175, 255, 222], [255, 255, 247, ..., 175, 170, 171], ..., [
numpy
中,array
方法可以将图像转换为大数组,问题是,这个数组中的数字是什么意思?(RGB值?灰度值?)
此外,当我将图像转换为模式“1”时
我发现im_arr数组不仅显示0和255:
array([[170, 170, 170, ..., 255, 255, 255],
[255, 248, 255, ..., 175, 255, 222],
[255, 255, 247, ..., 175, 170, 171],
...,
[ 32, 105, 110, ..., 32, 124, 32],
[ 32, 32, 32, ..., 101, 115, 39],
[ 41, 10, 32, ..., 109, 111, 115]], dtype=uint8)
为什么??(我很想知道不同模式数组中数字的含义)jpeg格式不支持模式1。将其保存为其他格式,png或bmp,然后查看该格式的数组
通过运行
im.convert(“1”)
,您正在将加载的图像转换为两层图像,该图像的像素值应仅为0或255。要做到这一点,
im_arr = np.array(im.getdata(), dtype = np.uint8).reshape(im.size[0], im.size[1])
这样,您将收到所需的双层图像,您可以使用matplotlib.pyplot.imshow
保存或查看该图像
您收到的奇数来自到numpy数组的转换过程。如果选择不同的数据类型(np.int
,np.int8
,np.uint8
,…),您会发现每种类型都返回不同的数组
由于不太了解
PIL.Image
的对象结构,我无法解释这是为什么。但是我认为可以肯定地说,如果没有.getdata()
的话,结果就是垃圾。你最初从哪里得到im
?
im_arr = np.array(im.getdata(), dtype = np.uint8).reshape(im.size[0], im.size[1])