機器視覺 車牌分割

2022-08-23 16:45:07 字數 3318 閱讀 1552

利用opencv或其他工具編寫程式實現對中的字元進行切割的操作。

1、編寫程式

目標如下

根據展示的程式功能編寫對應的程式:

第一步,讀取顯示影象的功能opencv已經提供了函式imread()和imshow(),**如下

水平投影:

def gethprojection(image):

hprojection = image.copy()

#影象高與寬

(h,w)=image.shape

#長度與影象高度一致的陣列

h_ = [0]*h

#迴圈統計每一行白色畫素的個數

for y in range(0,h):

for x in range(0,w):

if image[y,x] == 0:

h_[y]+=1

hprojection[y,x]=255

#繪製水平投影圖像

for y in range(0,h):

for x in range(0,h_[y]):

hprojection[y,x] = 0

cv2.imshow('hprojection2',hprojection)

cv2.waitkey(0)

return h_

垂直投影:

def getvprojection(image):

vprojection = image.copy()

#影象高與寬

(h,w) = image.shape

#長度與影象寬度一致的陣列

w_ = [0]*w

#迴圈統計每一列白色畫素的個數

for x in range(w):

for y in range(h):

if image[y,x] == 0:

w_[x]+=1

vprojection[y,x]=255

#繪製垂直平投影圖像

for x in range(0,w):

for y in range(h-w_[x],h):

vprojection[y,x] = 0

cv2.imshow('vprojection',vprojection)

cv2.waitkey(0)

return w_

編寫測試**測試結果:

h = gethprojection(er)

w = getvprojection(er)

第四步,得到每個字元的長寬存入陣列中並根據陣列在影象上畫矩形框實現字元的切割:

for i in range(len(h)):

if h[i] > 0 and start ==0:

start = 1

if h[i] <= 0 and start == 1:

start = 0

for i in range(len(h_start)):

#獲取行影象

cropimg = img[h_start[i]:h_end[i], 0:w]

#cv2.imshow('cropimg',cropimg)

#對行影象進行垂直投影

1、矩形框的繪製及無用字元的去除

解決方法:查資料找到opencv自帶的矩形框繪製函式,理解函式中每個值對應的資料,正確輸入資料就可以完成矩形框的繪製;無用字元也就是中間的點的去除花了不少時間去判斷並實驗,儲存長寬資料的陣列數量大,只能乙個乙個對著看,最後在w_陣列中找到了合適的範圍將中間的點去除掉。

這一次的實驗在上一次實驗的基礎上只需要新增乙個畫矩形框的函式,而這個函式opencv中是已經給出了,我們要做的僅僅是找到矩形框的頂點並輸入這個資料讓程式在原影象上畫出矩形框。

python機器視覺車牌識別 機器視覺車牌識別

機器視覺車牌識別 車牌號識別系統研究課題 2018年7月10日,許昌學院資訊工程 軟體職業技術 學院 創出彩 機器視覺智慧型檢測實踐隊第10天研究正式開展,由於老師有別的事情要忙,所以老師只是說了今天下午需要研究的內容,並沒有講的很詳細。今天下午老師說了乙個車牌號識別系統,車牌識別技術要求能夠將運動...

halcon機器視覺玩轉車牌識別 超人視覺羅超

1採集影象 read image image,c users administrator desktop 車牌.jpg dev close window dev open window 0,0,512,512,black windowhandle dev display image 2預處理之車牌定...

halcon機器視覺玩轉車牌識別

1採集影象 read image image,c users administrator desktop 車牌.jpg dev close window dev open window 0,0,512,512,black windowhandle dev display image 2預處理之車牌定...