图片的处理
一。图片处理过程
1. 将图片灰度转换,处理成背景为黑色,数字为白色的图片,图片矩阵元素只有0和1,且矩阵的数据类型(dtype)为 'float64' 。
2. 将图片里的数字取出来。
3. 将取出的数字伸缩到相应的大小。
二。代码实现
1 #!/usr/bin/env python 2 # -*- coding:utf8 -*- 3 4 from skimage import io 5 import numpy as np 6 7 m, n = 100, 100 # 设置处理后的图片大小 8 9 def imgOut(inputImg): # 对图片进行灰度处理和大小处理 10 img01 = io.imread(inputImg, as_grey = True) # 读取图片,并灰度转换 11 tu=sorted([(np.sum(img01==i),i) for i in set(img01.flat)]) # https://blog.csdn.net/l297969586/article/details/77878962 12 13 # 字体为白色,背景为黑色 14 img01[img01 == tu[-1][1]] = 0 15 img01[img01 != 0] = 1 16 17 # 截取图片数字 18 rowLen = len(img01[0]) 19 colLen = len(img01) 20 # 四个变量保存了数字顶部到图片顶部 数字底部到图片顶部 数字左边到图片左边 数字右边到图片左边的距离 21 row01, row02, col01, col02 = 0, 0, 0, 0 22 for i in range(colLen): 23 for j in range(rowLen): 24 if img01[i][j] == 1: 25 col01 = i 26 break 27 28 for i in range(colLen)[::-1]: 29 for j in range(rowLen): 30 if img01[i][j] == 1: 31 col02 = i 32 break 33 34 for i in range(rowLen): 35 for j in range(colLen): 36 if img01[j][i] == 1: 37 row01 = i 38 break 39 40 for i in range(rowLen)[::-1]: 41 for j in range(colLen): 42 if img01[j][i] == 1: 43 row02 = i 44 break 45 46 # 对矩阵img01进行截取 47 img02 = img01[col02-10:col01+10, row02-10:row01+10] 48 49 # 处理图片大小,数字的每个像素点在原图位置的比例,按同样的比例放倒伸缩的图片中 50 img03 = np.zeros([m,n]) 51 for i in range(len(img02)): 52 for j in range(len(img02[0])): 53 if img02[i][j] == 1: 54 img03[int(i*m/len(img02))][int(j*n/len(img02[0]))] = 1 55 return img03 56 57 img02 = imgOut('./2_1.png') # 处理当前文件夹的 2_1.png 图片 58 io.imsave("2.jpg",img02) # 处理后保存在当前文件夹的 2.jpg 图片
三。处理结果
处理前 处理后
四。代码下载
dev分支 https://gitee.com/GH16/neural-network.git