此車牌定位法採用的是:邊緣檢測+形態**算的方法。
缺點:此方法對於車輛牌照周圍灰度變化劇烈的情況容易定位錯誤。
function
dw=location
(i)%車牌定位方法
i1=rgb2gray(i);%灰度化
i2=edge(i1,'robert');%邊緣檢測
imshow(i2);
se=[1;1;1];%列腐蝕運算元,腐蝕運算元的形狀很重要
i3=imerode(i2,se);%此腐蝕可將非車牌區域的雜訊資訊腐蝕掉
figure,imshow(i3);
se1=strel('rectangle',[25,25]);%方形閉環運算元
i4=imclose(i3,se1);%閉環運算 需要選擇大的運算元
figure,imshow(i4);
i5=bwareaopen(i4,1500);%將連通域面積小於1500畫素的區域都刪除,此方法是為了把除車牌以外的區域都刪除
figure,imshow(i5);
[y,x,z]=size(i5);
i6=double(i5);
y1=zeros(y,1);
for ii=1:y%統計每一行的畫素值為1的個數
for jj=1:x
if(i6(ii,jj,1)==1)
y1(ii,1)=y1(ii,1)+1;
endendend
[temp,maxy]=max(y1);%temp為y1的最大值,maxy為其所在的行數
figure,plot(1:y,y1);
py1=maxy;
while((y1(py1,1)>=50)&&(py1>1))%求車牌上邊界
py1=py1-1;
endpy2=maxy;
while((y1(py2,1)>=50)&&(py2%求車牌下邊界
py2=py2+1;
endx1=zeros(1,x);
for jj=1:x%統計每一列的畫素值為1的個數,只統計車牌上下邊界之間的畫素數
for ii=py1:py2
if(i6(ii,jj,1)==1)
x1(1,jj)=x1(1,jj)+1;
endendend
figure,plot(1:x,x1);
px1=1;
while((x1(1,px1)<15)&&(px1%求車牌左邊界
px1=px1+1;
endpx2=x;
while((x1(1,px2)<15)&&(px2>px1))%求車牌右邊界
px2=px2-1;
endpx1=px1-1;
px2=px2+1;
dw=i(py1:py2,px1:px2,:);%求得車牌區域
figure,imshow(dw);
車牌定位(二)
車牌提取 寫在前面的話 python中有很多腐蝕膨脹的整合庫,cv2還是最常用的。這篇文章僅是從底層原理去理解這麼做的意義,供學習理解使用。簡單介紹一下本節,主要是用python繼續對進行預處理,主要是腐蝕膨脹 還有這節就把車牌直接提取 出來啦!常用庫就 path huiimg.png im ima...
Python OpenCV 車牌定位 橫向定位
一.原理 通過對已經縱向定位的車牌進行視窗搜尋,滑動視窗,遍歷視窗內的每一行的跳變點數,若符合則加入候選區域,若最後候選區域為0,則將的高度縮減,因為在進行縱向定位時,背景的變化造成的灰度跳變數也可能大於14 若最後候選區域數大於1,將視窗寬度減少,直到候選區域只有乙個。但該方法的車牌定位時間較長。...
複雜背景車牌定位
由於車牌號碼多為垂直數字,而車身引入的干擾在水平方向,進行垂直邊緣檢測,即可去除水平方向上顏色區別較大的干擾。該演算法核心之處在於利用了車牌號碼與車身干擾正好垂直的特點,僅在垂直方向檢測邊緣,而對水平的邊緣則不予理會。垂直邊緣檢測,可用 roberts 運算元 sobel 運算元 prewitt 運...