在机器学习手写数字识别案例中,需要将手写数字图片转矩阵向量。其实转矩阵,就需要根据图片上像素点来组成一个矩阵,如果把图片看作一个 长*宽 的二维矩阵,那么矩阵中的每个点的像素表示的数字组成一个新的矩阵。
一般图片我们会将他转灰度图,整个图片就由数字和空白组成,这样就好取像素值了。
下面介绍两种办法将手写数字图片转矩阵:
原始图片:
代码一:
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()
运行结果:
文章来源:https://www.toymoban.com/news/detail-504527.html
以上两种方式其实就是两个方法img.point()和img.getpixcel()的区别,他们参数不同,最终的结果都是将图片像素点转为数字,然后存储为新的矩阵。文章来源地址https://www.toymoban.com/news/detail-504527.html
到了这里,关于python将图片转矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!