手写数字图片二值化转换为32*32数组。
生活随笔
收集整理的這篇文章主要介紹了
手写数字图片二值化转换为32*32数组。
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
最近課設(shè)外加生病,本來打算在上一篇機(jī)器學(xué)習(xí)使用k-近鄰算法改進(jìn)約會(huì)網(wǎng)站的配對(duì)效果。就打算寫的一直沒有時(shí)間。按照《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》的流程,手寫數(shù)字識(shí)別是kNN中的最后一部分,也是一個(gè)比較經(jīng)典的案例。但是書中是直接使用32*32的二值化(只有1和0)數(shù)組進(jìn)行計(jì)算的,書中也并沒有講解如何將手寫數(shù)字轉(zhuǎn)化為32*32的數(shù)組,這方面網(wǎng)上已經(jīng)有很多資料了,所以只做了一個(gè)簡(jiǎn)單的二值化處理。
主要的流程就是將圖片打開之后,進(jìn)行降噪處理,然后將其灰度化,最后設(shè)置一個(gè)闕值將其二值化保存到一個(gè)32*32的數(shù)組中。
# @Time : 2017/12/15 18:11 # @Author : Leafage # @File : imgTo01.py # @Software: PyCharmfrom PIL import Image import matplotlib.pylab as plt import numpy as npdef picTo01(filename):"""將圖片轉(zhuǎn)化為32*32像素的文件,用0 1表示:param filename::return:"""# 打開圖片img = Image.open(filename).convert('RGBA')# 得到圖片的像素值raw_data = img.load()# 將其降噪并轉(zhuǎn)化為黑白兩色for y in range(img.size[1]):for x in range(img.size[0]):if raw_data[x, y][0] < 90:raw_data[x, y] = (0, 0, 0, 255)for y in range(img.size[1]):for x in range(img.size[0]):if raw_data[x, y][1] < 136:raw_data[x, y] = (0, 0, 0, 255)for y in range(img.size[1]):for x in range(img.size[0]):if raw_data[x, y][2] > 0:raw_data[x, y] = (255, 255, 255, 255)# 設(shè)置為32*32的大小img = img.resize((32, 32), Image.LANCZOS)# 進(jìn)行保存,方便查看img.save('test.png')# 得到像素?cái)?shù)組,為(32,32,4)array = plt.array(img)# 按照公式將其轉(zhuǎn)為01, 公式: 0.299 * R + 0.587 * G + 0.114 * Bgray_array = np.zeros((32, 32))# 行數(shù)for x in range(array.shape[0]):# 列數(shù)for y in range(array.shape[1]):# 計(jì)算灰度,若為255則白色,數(shù)值越小越接近黑色gary = 0.299 * array[x][y][0] + 0.587 * array[x][y][1] + 0.114 * array[x][y][2]# 設(shè)置一個(gè)闕值,記為0if gary == 255:gray_array[x][y] = 0else:# 否則認(rèn)為是黑色,記為1gray_array[x][y] = 1# 得到對(duì)應(yīng)名稱的txt文件name01 = filename.split('.')[0]name01 = name01 + '.txt'# 保存到文件中np.savetxt(name01, gray_array, fmt='%d', delimiter='')if __name__ == '__main__':picTo01('3.png')手寫數(shù)字的原圖片:
運(yùn)行程序之后中間生成的黑白32*32的圖片:
最后生成的32*32的二值化數(shù)組:
總結(jié)
以上是生活随笔為你收集整理的手写数字图片二值化转换为32*32数组。的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天龙八部——目录五首词
- 下一篇: KIEL 5如何烧录程序到STM32芯片