資源簡介
本軟件通過簡單的頁面來展示如何使用計算機來識別一副圖像上指定區域內的文字。通過一些圖像的基礎處理方法得到我們想要的圖像區域,再利用機器學習的方法對圖像內的文字進行分類識別。
代碼片段和文件信息
import?cv2
import?numpy?as?np
from?numpy.linalg?import?norm
import?sys
import?os
import?json
SZ?=?20??????????#訓練圖片長寬
MAX_WIDTH?=?1000?#原始圖片最大寬度
Min_Area?=?2000??#車牌區域允許最大面積
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
#根據設定的閾值和圖片直方圖,找出波峰,用于分隔字符
def?find_waves(threshold?histogram):
up_point?=?-1#上升點
is_peak?=?False
if?histogram[0]?>?threshold:
up_point?=?0
is_peak?=?True
wave_peaks?=?[]
for?ix?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
#根據找出的波峰,分隔圖片,從而得到逐個字符圖片
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訓練
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訓練
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[:1010:]?bin[10:10:]
mag_cells?=?mag[:10:10]?mag[10::10]?mag[:1010:]?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“?“浙“
]
class?StatModel(object):
def?load(self?fn):
self.model?=?self.model.load(fn)??
def?save(self?fn):
self.model.save(fn)
class?SVM(StatModel):
def?__init__(self?C?=?1?gamma?=?0.5):
self.model?=?cv2.ml.SVM_create()
self.model.setGamma(gamma)
self.model.setC(C)
self.model.setKernel(cv2.ml.SVM_RBF)
self.model.setT
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2019-01-17?11:11??車牌識別\
?????文件????????1157??2018-05-26?22:39??車牌識別\.gitignore
?????文件?????????262??2018-05-26?22:39??車牌識別\config.js
?????文件????????1060??2018-05-26?22:39??車牌識別\LICENSE
?????文件???????18184??2018-05-26?22:39??車牌識別\predict.py
?????文件????????1804??2018-05-26?22:39??車牌識別\README.md
?????目錄???????????0??2019-01-17?11:11??車牌識別\Screenshots\
?????文件??????513442??2018-05-26?22:39??車牌識別\Screenshots\3.png
?????文件??????335454??2018-05-26?22:39??車牌識別\Screenshots\5.png
?????文件????????4641??2019-01-14?15:05??車牌識別\surface.py
?????文件?????4595678??2018-05-26?22:39??車牌識別\svm.dat
?????文件?????3645216??2018-05-26?22:39??車牌識別\svmchinese.dat
?????目錄???????????0??2019-01-17?11:11??車牌識別\test\
?????文件?????4543569??2018-05-26?22:39??車牌識別\test\1.jpg
?????文件?????2718121??2018-05-26?22:39??車牌識別\test\2.jpg
?????文件???????62588??2018-05-26?22:39??車牌識別\test\cAA662F.jpg
?????文件???????27089??2018-05-26?22:39??車牌識別\test\car3.jpg
?????文件???????25090??2018-05-26?22:39??車牌識別\test\car4.jpg
?????文件???????28604??2018-05-26?22:39??車牌識別\test\car5.jpg
?????文件???????27744??2018-05-26?22:39??車牌識別\test\car7.jpg
?????文件???????24073??2018-05-26?22:39??車牌識別\test\lLD9016.jpg
?????文件???????52515??2018-05-26?22:39??車牌識別\test\wA87271.jpg
?????文件??????116063??2018-05-26?22:39??車牌識別\test\wATH859.jpg
?????文件??????141788??2018-05-26?22:39??車牌識別\test\wAUB816.jpg
?????目錄???????????0??2019-01-17?11:11??車牌識別\train\
?????文件?????3336217??2018-05-26?22:39??車牌識別\train\chars2.7z
?????文件?????1099009??2018-05-26?22:39??車牌識別\train\charsChinese.7z
?????目錄???????????0??2019-01-17?11:11??車牌識別\__pycache__\
?????文件???????13061??2019-01-14?14:34??車牌識別\__pycache__\predict.cpython-37.pyc
評論
共有 條評論