一.原理
通過對已經縱向定位的車牌進行視窗搜尋,滑動視窗,遍歷視窗內的每一行的跳變點數,若符合則加入候選區域,若最後候選區域為0,則將的高度縮減,因為在進行縱向定位時,背景的變化造成的灰度跳變數也可能大於14;若最後候選區域數大於1,將視窗寬度減少,直到候選區域只有乙個。但該方法的車牌定位時間較長。
二.部分**
水平定位函式
def hor_locate
(image)
: jump_list =
flag = false
for x in
range
(h):
jump =
0 start = image[x][0
]for y in
range
(w):
ifabs
(int
(image[x]
[y])
- start)
>
250:
jump +=
1 start = image[x]
[y] jump_list.
(jump)
jump_list.
reverse()
flag1 = false
flag2 = false
area =
license_hor_start =
0 license_hor_end =
0for i in
range
(len
(jump_list)):
if flag1 is false and jump_list[i]
>=14:
license_hor_start = i
flag1 = true
if flag1 is true and jump_list[i]
<14:
license_hor_end = i -
1 flag1 = false
if license_hor_end - license_hor_start >20:
flag2 = true
result_start = license_hor_start
result_end = license_hor_end
if flag2 is false:
continue
break
# print
(jump_list[result_start: result_end]
)return result_start, result_end
垂直定位函式
def ver_locate
(image)
: h, w = image.shape[:2
] # 定義搜尋視窗的長度和寬度
window_h = h
window_w = h *
6 # 因為我國車牌的標準尺寸為440mm*
140mm 所以根據已有的高度,預估車牌區域的寬度
result = false
ver_start =
0 ver_end =
0 candidate_list =
while
len(candidate_list)!=1
: h, w = image.shape[:2
]for i in
range(0
, w - window_w,3)
: result =
isvalid
(image, i, i + window_w)
if result is false:
continue
ver_start = i
ver_end = i + window_w
candidate_list.
((ver_start, ver_end)
) result = false
print
(len
(candidate_list))if
len(candidate_list)==0
: image = image[0+
1:h -1,
0:w]
iflen
(candidate_list)
>1:
window_w = window_w -
3 candidate_list =
# 重置候選區域
return ver_start, ver_end
三.測試結果
原圖一
預處理後的圖
縱向定位的車牌圖
橫向定位後的車牌圖
原圖二
預處理後的圖
縱向定位的車牌圖
橫向定位後的車牌圖
工作了,沒時間進行後續更新了,卡在傾斜矯正上了
四.參考文獻
[1]龔成清. 一種簡單快速的車牌定位演算法[j]. 計算機系統應用, 2011, 20(9):214-217.
[2]蔣欣欣. 彩色車牌影象定位及字元分割方法研究[d]. 湖南師範大學, 2011.
[3]劉麗新, 劉京剛. 行掃瞄進行車牌上下邊界定位的研究[j]. 儀器儀表學報, 2005, 26(8):177-179.
基於python OpenCV的車牌號碼識別
基於python opencv的車牌號碼識別 車牌識別行業已具備一定的市場規模,在電子警察 公路卡口 停車場 商業管理 汽修服務等領域已取得了部分應用。乙個典型的車輛牌照識別系統一般包括以下4個部分 車輛影象獲取 車牌定位 車牌字元分割和車牌字元識別 1 車牌定位的主要工作是從獲取的車輛影象中找到汽...
python opencv 安裝整理
這兩天比較有空,在公司內想學習一下opencv,又不想安裝vc 所以就那個python看opencv。安裝環境本來很簡單 但是我python是64的 估計也很多 而opencv的安裝要有乙個numpy庫 這個在官網上只有32位的 所以,事情變得複雜起來。網上找了一下,只道有提供64位版的numpy庫...
python opencv 輪廓檢測
輪廓 contours 指的是有相同顏色或者密度,連線所有連續點的一條曲線。檢測輪廓的工作對形狀分析和物體檢測與識別都非常有用。在輪廓檢測之前,首先要對進行二值化或者canny邊緣檢測。在opencv中,尋找的物體是白色的,而背景必須是黑色的,因此預處理時必須保證這一點。import cv2 讀入i...