資源簡介
有詳細注釋的大學(xué)生課設(shè)作品,直接下載,下載相應(yīng)的包即可運行,代碼中有詳細注釋,自帶了車牌字符的訓(xùn)練集,可自行訓(xùn)練。
代碼片段和文件信息
import?cv2
import?numpy?as?np
from?numpy.linalg?import?norm
import?sys
import?os
import?json
from?matplotlib?import?pyplot?as?plt
SZ?=?20??#?訓(xùn)練圖片長寬
MAX_WIDTH?=?1000??#?原始圖片最大寬度
Min_Area?=?2000??#?車牌區(qū)域允許最大面積
PROVINCE_START?=?1000
#?讀取圖片文件
def?imreadex(filename):
????return?cv2.imdecode(np.fromfile(filename?dtype=np.uint8)?cv2.IMREAD_COLOR)
def?point_limit(point):
????if?point[0]?0:
????????point[0]?=?0
????if?point[1]?0:
????????point[1]?=?0
#?根據(jù)設(shè)定的閾值和圖片直方圖,找出波峰,用于分隔字符
def?find_waves(threshold?histogram):
????up_point?=?-1??#?上升點
????is_peak?=?False
????if?histogram[0]?>?threshold:
????????up_point?=?0
????????is_peak?=?True
????wave_peaks?=?[]
????for?i?x?in?enumerate(histogram):
????????if?is_peak?and?x?????????????if?i?-?up_point?>?2:
????????????????is_peak?=?False
????????????????wave_peaks.append((up_point?i))
????????elif?not?is_peak?and?x?>=?threshold:
????????????is_peak?=?True
????????????up_point?=?i
????if?is_peak?and?up_point?!=?-1?and?i?-?up_point?>?4:
????????wave_peaks.append((up_point?i))
????return?wave_peaks
#?根據(jù)找出的波峰,分隔圖片,從而得到逐個字符圖片
def?seperate_card(img?waves):
????part_cards?=?[]
????for?wave?in?waves:
????????part_cards.append(img[:?wave[0]:wave[1]])
????return?part_cards
#?來自opencv的sample,用于svm訓(xùn)練
def?deskew(img):
????m?=?cv2.moments(img)
????if?abs(m[‘mu02‘])?1e-2:
????????return?img.copy()
????skew?=?m[‘mu11‘]?/?m[‘mu02‘]
????M?=?np.float32([[1?skew?-0.5?*?SZ?*?skew]?[0?1?0]])
????img?=?cv2.warpAffine(img?M?(SZ?SZ)?flags=cv2.WARP_INVERSE_MAP?|?cv2.INTER_LINEAR)
????return?img
#?來自opencv的sample,用于svm訓(xùn)練
def?preprocess_hog(digits):
????samples?=?[]
????for?img?in?digits:
????????gx?=?cv2.Sobel(img?cv2.CV_32F?1?0)
????????gy?=?cv2.Sobel(img?cv2.CV_32F?0?1)
????????mag?ang?=?cv2.cartToPolar(gx?gy)
????????bin_n?=?16
????????bin?=?np.int32(bin_n?*?ang?/?(2?*?np.pi))
????????bin_cells?=?bin[:10?:10]?bin[10:?:10]?bin[:10?10:]?bin[10:?10:]
????????mag_cells?=?mag[:10?:10]?mag[10:?:10]?mag[:10?10:]?mag[10:?10:]
????????hists?=?[np.bincount(b.ravel()?m.ravel()?bin_n)?for?b?m?in?zip(bin_cells?mag_cells)]
????????hist?=?np.hstack(hists)
????????#?transform?to?Hellinger?kernel
????????eps?=?1e-7
????????hist?/=?hist.sum()?+?eps
????????hist?=?np.sqrt(hist)
????????hist?/=?norm(hist)?+?eps
????????samples.append(hist)
????return?np.float32(samples)
#?不能保證包括所有省份
provinces?=?[
????“zh_cuan“?“川“
????“zh_e“?“鄂“
????“zh_gan“?“贛“
????“zh_gan1“?“甘“
????“zh_gui“?“貴“
????“zh_gui1“?“桂“
????“zh_hei“?“黑“
????“zh_hu“?“滬“
????“zh_ji“?“冀“
????“zh_jin“?“津“
????“zh_jing“?“京“
????“zh_jl“?“吉“
????“zh_liao“?“遼“
????“zh_lu“?“魯“
????“zh_meng“?“蒙“
????“zh_min“?“閩“
????“zh_ning“?“寧“
????“zh_qing“?“靑“
????“zh_qiong“?“瓊“
????“zh_shan“?“陜“
????“zh_su“?“蘇“
????“zh_sx“?“晉“
????“zh_wan“?“皖“
????“zh_xiang“?“湘“
????“zh_xin“?“新“
????“zh_yu“?“豫“
????“zh_yu1“?“渝“
????“zh_yue“?“粵“
????“zh_yun“?“云“
????“zh_zang“?“藏“
????“zh_zhe“?“浙“
]
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-03-12?19:03??carLicense_recongnition\
?????文件?????3645216??2018-05-26?07:39??carLicense_recongnition\svmchinese.dat
?????目錄???????????0??2019-03-12?19:03??carLicense_recongnition\.idea\
?????文件????????9907??2019-03-12?19:01??carLicense_recongnition\.idea\workspace.xm
?????文件?????????499??2019-03-04?17:25??carLicense_recongnition\.idea\carLicense_recongnition.iml
?????文件?????????298??2019-03-04?17:25??carLicense_recongnition\.idea\modules.xm
?????文件?????????135??2019-03-04?17:25??carLicense_recongnition\.idea\encodings.xm
?????文件?????????185??2019-03-04?17:25??carLicense_recongnition\.idea\misc.xm
?????文件?????4595678??2018-05-26?07:39??carLicense_recongnition\svm.dat
?????文件???????20971??2019-03-12?19:01??carLicense_recongnition\predict.py
?????目錄???????????0??2019-03-12?19:03??carLicense_recongnition\__pycache__\
?????文件???????12551??2019-03-12?17:33??carLicense_recongnition\__pycache__\predict.cpython-37.pyc
?????目錄???????????0??2019-03-12?19:03??carLicense_recongnition\test\
?????文件???????52515??2018-05-26?07:39??carLicense_recongnition\test\wA87271.jpg
?????文件??????141788??2018-05-26?07:39??carLicense_recongnition\test\wAUB816.jpg
?????文件??????116063??2018-05-26?07:39??carLicense_recongnition\test\wATH859.jpg
?????文件???????24073??2018-05-26?07:39??carLicense_recongnition\test\lLD9016.jpg
?????文件?????4543569??2018-05-26?07:39??carLicense_recongnition\test\1.jpg
?????文件???????28604??2018-05-26?07:39??carLicense_recongnition\test\car5.jpg
?????文件???????27744??2018-05-26?07:39??carLicense_recongnition\test\car7.jpg
?????文件?????2718121??2018-05-26?07:39??carLicense_recongnition\test\2.jpg
?????文件???????62588??2018-05-26?07:39??carLicense_recongnition\test\cAA662F.jpg
?????文件???????27089??2018-05-26?07:39??carLicense_recongnition\test\car3.jpg
?????文件???????25090??2018-05-26?07:39??carLicense_recongnition\test\car4.jpg
?????目錄???????????0??2019-03-12?19:03??carLicense_recongnition\train\
?????文件?????3336217??2018-05-26?07:39??carLicense_recongnition\train\chars2.7z
?????文件?????1099009??2018-05-26?07:39??carLicense_recongnition\train\charsChinese.7z
?????文件????????4038??2019-03-12?17:07??carLicense_recongnition\window.py
?????文件?????????262??2018-05-26?07:39??carLicense_recongnition\config.js
評論
共有 條評論