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的ndimagelibrary通常是将像素作为数据(数组)使用的go-to库。您可以使用scipy.ndimage.imread
从文件(支持的最常用格式)将图像加载到numpy数组中,该数组可以轻松地进行形状调整和数学操作。模式
关键字可用于指定加载时的颜色空间转换(将RGB图像转换为黑白)。在您的例子中,您要求使用0-255(8位灰度)的单色像素,因此您将使用mode='L'
。有关用法/更有用的函数,请参阅。如果使用OpenCV
,gray=cv2。imread(image,0)
将返回带有n行
xm列
单通道numpy数组的灰度图像<代码>行,cols=gray。shape
将返回图像的高度和宽度。用于读取numpy数组(然后可以随意重塑)。对8位灰度图像使用模式'L'
,这就成功了!非常感谢。请作为答案发布。我还有一个小问题。这张图片给了我一个二维数组。但是,我想对图像进行一次热编码(1d向量)。有简单的方法吗?@Christian你现在应该有一个像素值的numpy数组。假设img=imread(stuff)
您可以调用length=np.prod(img.shape);img=img.重塑(长度)
。或者,您可以使用ndarray的属性,该属性为您提供数组的内存视图,就好像它是平面的一样,而不会实际移动内存。后者通常是更好的方法,某些函数可能不会将其视为规则数组,从而导致不兼容。