共计 1001 个字符,预计需要花费 3 分钟才能阅读完成。
1. 手写数字识别是 python 图像处理的基础,首先需要安装 pillow,我们需要以管理员身份打开 Windows 命令行并输入 pip install pillow,如果提示 pip 需要更新,我们输入 python -m pip install –upgrade pip 先更新 pip,这时再安装 pillow 就没问题了。
2. 首先我们需要引入和图片识别有关的库,输入 from PIL import Image 进行引入,引入后我们就可以打开要进行操作的图片了,这里需要用到 Image 中的 open()函数和 save()函数,open()函数用来打开文件,save()函数用来将图片保存为我们需要的格式。
3. 然后我们需要确定图片的长和宽,调用 size()函数可以返回一个以图片的宽和高为元素的元组,这时获取图片的宽和高就可以用元素下标的方式。
4. 我们在识别时要得到一个用 1 标识出数字的文本文档,第一个图为我用电脑的画图随便写的数字 6,第二个图是经过识别得出的文本文档,我们可以看出,第二个图中用 1 标出了手写体的数字 6 的形状。因此我们在数字识别的过程中需要知道每一个位置的 rgb 编码,这个调用 getpixel()即可实现,我们知道,黑色的 rgb 编码的三个数的和为 0,我们要得到一个用 0 和 1 标识出来的图像,只需在 rgb 编码数之和为 0 的位置写入 1,其余不为 0 的位置写入 0。
5. 编码实现:
from PIL import Image
im = Image.open(“C:/Users/21974/Desktop/handwrite.PNG”)
im.save(“C:/Users/21974/Desktop/handwrite.bmp”)
df = open(“C:/Users/21974/Desktop/practicePil.txt”, “a”) #打开一个文本用于接下来的写入操作
width = im.size[0]
height = im.size[1]
for i in range(0, width):
for j in range(0, height):
k = im.getpixel((i, j)) #注意此处为两个括号,第二个括号内代表坐标为 (i,j) 处的色彩元素
sum = k[0]+k[1]+k[2] #rgb 编码的三个数字相加
if sum == 0:
df.write(“1”)
else:
df.write(“0”)
df.write(“\n”)
df.close()
运行即可得到以 0 和 1 绘制的文本图像。