python将图片转矩阵
Posted luffy5459
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python将图片转矩阵相关的知识,希望对你有一定的参考价值。
在机器学习手写数字识别案例中,需要将手写数字图片转矩阵向量。其实转矩阵,就需要根据图片上像素点来组成一个矩阵,如果把图片看作一个 长*宽 的二维矩阵,那么矩阵中的每个点的像素表示的数字组成一个新的矩阵。
一般图片我们会将他转灰度图,整个图片就由数字和空白组成,这样就好取像素值了。
下面介绍两种办法将手写数字图片转矩阵:
原始图片:
代码一:
import numpy as np
from PIL import Image
img = Image.open('number6.png')
img = img.resize((32,32))
img = img.convert("L")
img_new = img.point(lambda x:0 if x> 170 else 1)
arr = np.array(img_new)
for i in range(arr.shape[0]):
print(arr[i])
运行结果:
这种方式,直接打印的是每一组向量,而不是字符串的形式。
代码二:
from PIL import Image
img = Image.open('number6.png')
img = img.resize((32,32))
img = img.convert("L")
width,height = img.size
for i in range(height):
for j in range(width):
color = img.getpixel((j,i))
if(color>170):
print('0',end=' ')
else:
print('1',end=' ')
print()
运行结果:
以上两种方式其实就是两个方法img.point()和img.getpixcel()的区别,他们参数不同,最终的结果都是将图片像素点转为数字,然后存储为新的矩阵。
以上是关于python将图片转矩阵的主要内容,如果未能解决你的问题,请参考以下文章