寫(xiě)在前面
這一段的內(nèi)容可以說(shuō)是最難的一部分之一了,因?yàn)槭亲R(shí)別圖像,所以涉及到的算法會(huì)相比之前的來(lái)說(shuō)比較困難,所以我盡量會(huì)講得清楚一點(diǎn)。
而且因?yàn)樵诰帉?xiě)的過(guò)程中,把前面的一些邏輯也修改了一些,將其變得更完善了,所以一切以本篇的為準(zhǔn)。當(dāng)然,如果想要直接看代碼,代碼全部放在我的GitHub中,所以這篇文章主要負(fù)責(zé)講解,如需代碼請(qǐng)自行前往GitHub。
本次大綱
上一次寫(xiě)到了數(shù)據(jù)庫(kù)的建立,我們能夠?qū)崟r(shí)的將更新的訓(xùn)練圖片存入CSV文件中。所以這次繼續(xù)往下走,該輪到識(shí)別圖片的內(nèi)容了。
首先我們需要從文件夾中提取出需要被識(shí)別的圖片test.png,并且把它經(jīng)過(guò)與訓(xùn)練圖片相同的處理得到1x10000大小的向量。因?yàn)閮烧咧g存在微小的差異,我也不是很想再往源代碼之中增加邏輯了,所以我就直接把增加待識(shí)別圖片的函數(shù)重新寫(xiě)一個(gè)命名為GetTestPicture,內(nèi)容與GetTrainPicture類似,只不過(guò)少了“增加圖片名稱”這一個(gè)部分。
之后我們就可以開(kāi)始進(jìn)行正式圖片識(shí)別內(nèi)容了。
主要是計(jì)算待識(shí)別圖片與所有訓(xùn)練圖片的距離。當(dāng)兩個(gè)圖片距離越近的時(shí)候,說(shuō)明他們?cè)较嗨疲敲此麄兒苡锌赡軐?xiě)的就是同一個(gè)數(shù)。所以利用這個(gè)原理,我們可以找出距離待識(shí)別圖像最近的幾個(gè)訓(xùn)練圖片,并輸出他們的數(shù)字分別是幾。比如說(shuō)我想輸出前三個(gè),前三個(gè)分別是3,3,9,那就說(shuō)明這個(gè)待識(shí)別圖片很有可能是3.
之后還可以對(duì)每一個(gè)位置加個(gè)權(quán)重,具體的就放在下一次再講,本節(jié)內(nèi)容已經(jīng)夠多了。
(第一篇文章之中我說(shuō)過(guò)利用圖片洞數(shù)檢測(cè)。我嘗試了一下,認(rèn)為有些不妥,具體原因放在本文末。)
MAIN代碼
所以直接把主要代碼放上來(lái),邏輯相對(duì)來(lái)說(shuō)還是比較清晰的
import osimport OperatePicture as OPimport OperateDatabase as ODimport PictureAlgorithm as PAimport csv##Essential vavriable 基礎(chǔ)變量#Standard size 標(biāo)準(zhǔn)大小N = 100#Gray threshold 灰度閾值color = 200/255n = 10#讀取原CSV文件reader = list(csv.reader(open('Database.csv', encoding = 'utf-8')))#清除讀取后的第一個(gè)空行del reader[0]#讀取num目錄下的所有文件名fileNames = os.listdir(r"./num/")#對(duì)比f(wàn)ileNames與reader,得到新增的圖片newFileNamesnewFileNames = OD.NewFiles(fileNames, reader)print('New pictures are: ', newFileNames)#得到newFilesNames對(duì)應(yīng)的矩陣pic = OP.GetTrainPicture(newFileNames)#將新增圖片矩陣存入CSV中OD.SaveToCSV(pic, newFileNames)#將原數(shù)據(jù)庫(kù)矩陣與新數(shù)據(jù)庫(kù)矩陣合并pic = OD.Combination(reader, pic)#得到待識(shí)別圖片testFiles = os.listdir(r"./test/")testPic = OP.GetTestPicture(testFiles)#計(jì)算每一個(gè)待識(shí)別圖片的可能分類result = PA.CalculateResult(testPic, pic)for item in result: for i in range(n): print('第'+str(i+1)+'個(gè)向量為'+str(item[i+n])+',距離為'+str(item[i]))
新聞熱點(diǎn)
疑難解答
圖片精選