Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将图像转换为像素向量_Python_Image Processing - Fatal编程技术网

Python 将图像转换为像素向量

Python 将图像转换为像素向量,python,image-processing,Python,Image Processing,我正在尝试将图像转换为像素阵列。 这是我目前的代码 im = Image.open("beeleg.png") pixels = im.load() im.getdata() # doesn't work print(pixels # doesn't work 理想情况下,我的最终目标是将图像转换为仅包含像素的向量,因此,例如,如果我有一个维度为100x100的图像,那么我需要一个维度为1x10000的向量,其中每个值都在[0255]之间。然后,将数组中的每个值除以256,并在向量的前面添加一

我正在尝试将图像转换为像素阵列。 这是我目前的代码

im = Image.open("beeleg.png")
pixels = im.load()
im.getdata() # doesn't work
print(pixels # doesn't work

理想情况下,我的最终目标是将图像转换为仅包含像素的向量,因此,例如,如果我有一个维度为
100x100
的图像,那么我需要一个维度为
1x10000
的向量,其中每个值都在[0255]之间。然后,将数组中的每个值除以
256
,并在向量的前面添加一个偏差
1
。但是,如果不能获得阵列,我无法继续执行所有这些操作。如何继续?

Scipy的ndimage
library通常是将像素作为数据(数组)使用的go-to库。您可以使用
scipy.ndimage.imread
从文件(支持的最常用格式)将图像加载到numpy数组中,该数组可以轻松地进行形状调整和数学操作。
模式
关键字可用于指定加载时的颜色空间转换(将RGB图像转换为黑白)。在您的例子中,您要求使用0-255(8位灰度)的单色像素,因此您将使用
mode='L'
。有关用法/更有用的函数,请参阅。

如果使用
OpenCV
gray=cv2。imread(image,0)
将返回带有
n行
x
m列
单通道numpy数组的灰度图像<代码>行,cols=gray。shape
将返回图像的高度和宽度。

用于读取numpy数组(然后可以随意重塑)。对8位灰度图像使用模式
'L'
,这就成功了!非常感谢。请作为答案发布。我还有一个小问题。这张图片给了我一个二维数组。但是,我想对图像进行一次热编码(1d向量)。有简单的方法吗?@Christian你现在应该有一个像素值的numpy数组。假设
img=imread(stuff)
您可以调用
length=np.prod(img.shape);img=img.重塑(长度)
。或者,您可以使用ndarray的属性,该属性为您提供数组的内存视图,就好像它是平面的一样,而不会实际移动内存。后者通常是更好的方法,某些函数可能不会将其视为规则数组,从而导致不兼容。