国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現識別手寫數字 Python圖片讀入與處理

2020-02-22 23:02:42
字體:
來源:轉載
供稿:網友

寫在前面

在上一篇文章Python徒手實現手寫數字識別—大綱中,我們已經講過了我們想要寫的全部思路,所以我們不再說全部的思路。

我這一次將圖片的讀入與處理的代碼寫了一下,和大綱寫的過程一樣,這一段代碼分為以下幾個部分:

讀入圖片; 將圖片讀取為灰度值矩陣; 圖片背景去噪; 切割圖片,得到手寫數字的最小矩陣; 拉伸/壓縮圖片,得到標準大小為100x100大小矩陣; 將圖片拉為1x10000大小向量,存入訓練矩陣中。

所以下面將會對這幾個函數進行詳解。

代碼分析

基礎內容

首先我們現在最前面定義基礎變量

import osfrom skimage import ioimport numpy as np##Essential vavriable 基礎變量#Standard size 標準大小N = 100#Gray threshold 灰度閾值color = 100/255

其中標準大小指的是我們在最后經過切割、拉伸后得到的圖片的尺寸為NxN?;叶乳撝抵傅氖窃谀硞€點上的灰度超過閾值后則變為1.

接下來是這圖像處理的一部分的主函數

filenames = os.listdir(r"./num/")pic = GetTrainPicture(filenames)

其中filenames得到在num目錄下所有文件的名稱組成的列表。pic則是通過函數GetTrainPicture得到所有訓練圖像向量的矩陣。這一篇文章主要就是圍繞這個函數進行講解。

GetTrainPicture函數

GetTrainPicture函數內容如下

#Read and save train picture 讀取訓練圖片并保存def GetTrainPicture(files): Picture = np.zeros([len(files), N**2+1]) #loop all pictures 循環所有圖片文件 for i, item in enumerate(files):  #Read the picture and turn RGB to grey 讀取這個圖片并轉為灰度值  img = io.imread('./num/'+item, as_grey = True)  #Clear the noise 清除噪音  img[img>color] = 1  #Cut the picture and get the picture of handwritten number  #將圖片進行切割,得到有手寫數字的的圖像  img = CutPicture(img)  #Stretch the picture and get the standard size 100x100  #將圖片進行拉伸,得到標準大小100x100  img = StretchPicture(img).reshape(N**2)  #Save the picture to the matrix 將圖片存入矩陣  Picture[i, 0:N**2] = img  #Save picture's name to the matrix 將圖片的名字存入矩陣  Picture[i, N**2] = float(item[0]) return Picture

可以看出這個函數的信息量非常大,基本上今天做的所有步驟我都把封裝到一個個函數里面了,所以這里我們可以看到圖片處理的所有步驟都在這里。

提前準備

首先是創建了一個用來存放所有圖像向量的矩陣Picture,大小為fx10001,其中f代表我們擁有的訓練圖片的數目,10001的前10000位代表圖片展開后的向量長度,最后一維代表這一個向量的類別,比如說時2就代表這個圖片上面寫的數字是2.

接下來用的是一個for循環,將files里面每一個圖片進行一次迭代,計算出向量后存入picture。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和硕县| 花垣县| 济源市| 太保市| 朝阳区| 勃利县| 奎屯市| 印江| 靖安县| 淮南市| 栖霞市| 顺昌县| 顺平县| 仁寿县| 平江县| 方城县| 赫章县| 凌海市| 阿勒泰市| 托克托县| 陆良县| 略阳县| 长岭县| 吉安县| 盈江县| 通河县| 南漳县| 云梦县| 福清市| 昌平区| 桂平市| 闸北区| 永新县| 红桥区| 松阳县| 开封市| 昆明市| 武隆县| 韶山市| 苍溪县| 昆明市|