資源簡介
python實現車牌識別,使用opencv中的svm,大概500行代碼. 然后還有識別用的數據庫,
代碼片段和文件信息
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
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1157??2018-03-23?04:13??car\.gitignore
?????文件????????262??2018-03-23?04:13??car\config.js
?????文件??????18178??2018-05-14?14:06??car\predict.py
?????文件????4690657??2018-03-23?04:13??car\svm.dat
?????文件????3645216??2018-03-23?04:13??car\svmchinese.dat
?????文件????4543569??2018-03-23?04:13??car\test\1.jpg
?????文件????2718121??2018-03-23?04:13??car\test\2.jpg
?????文件??????62588??2018-03-23?04:13??car\test\cAA662F.jpg
?????文件??????27089??2018-03-23?04:13??car\test\car3.jpg
?????文件??????25090??2018-03-23?04:13??car\test\car4.jpg
?????文件??????28604??2018-03-23?04:13??car\test\car5.jpg
?????文件??????27744??2018-03-23?04:13??car\test\car7.jpg
?????文件??????24073??2018-03-23?04:13??car\test\lLD9016.jpg
?????文件??????52515??2018-03-23?04:13??car\test\wA87271.jpg
?????文件?????116063??2018-03-23?04:13??car\test\wATH859.jpg
?????文件?????141788??2018-03-23?04:13??car\test\wAUB816.jpg
?????文件????????665??2014-08-23?14:44??car\train\chars2\0\101-1.jpg
?????文件????????674??2014-08-23?14:44??car\train\chars2\0\105-5.jpg
?????文件????????641??2014-08-23?14:44??car\train\chars2\0\106-5.jpg
?????文件????????642??2014-08-23?14:44??car\train\chars2\0\110-6.jpg
?????文件????????646??2014-08-23?14:44??car\train\chars2\0\110-7.jpg
?????文件????????712??2014-08-23?14:44??car\train\chars2\0\111-4.jpg
?????文件????????639??2014-08-23?14:44??car\train\chars2\0\113-1.jpg
?????文件????????669??2014-08-23?14:44??car\train\chars2\0\114-2.jpg
?????文件????????666??2014-08-23?14:44??car\train\chars2\0\12-1.jpg
?????文件????????683??2014-08-23?14:44??car\train\chars2\0\124-3.jpg
?????文件????????674??2014-08-23?14:44??car\train\chars2\0\126-3.jpg
?????文件????????674??2014-08-23?14:44??car\train\chars2\0\127-2.jpg
?????文件????????657??2014-08-23?14:44??car\train\chars2\0\129-3.jpg
?????文件????????716??2014-08-23?14:44??car\train\chars2\0\131-5.jpg
............此處省略16456個文件信息
- 上一篇:Python-3.7.4.tgz
- 下一篇:Python-3.6.2.tgz
評論
共有 條評論