當前位置:首頁 » 操作系統 » 車牌號識別源碼

車牌號識別源碼

發布時間: 2023-11-15 06:46:32

『壹』 車牌識別系統原理與代碼「YOLO+MLP」

車牌識別系統可以自動檢測並識別圖像中的車輛牌照,其演算法主要包括牌照定位、牌照分割、字元識別等步驟。本文將給出一種基於深度學習的車牌識別系統方案。

由於可以自動地從視頻圖像中提取車輛牌照信息,因此車牌識別系統可以應用於以下行業:

我們的項目包含以下三個步驟:車輛牌照檢測、牌照字元分割、牌照字元識別。

我們使用Yolo(You Only Look One)演算法來檢測車輛牌照。Yolo是一個基於卷積神經網路的深度學習目標檢測架構。該架構由 Joseph Redmon , Ali Farhadi, Ross Girshick和Santosh Divvala引入,2015年推出第一個版本,然後逐漸升級至版本3:

Yolo是一個端到端訓練的單一網路,可以用來預測目標的類別與邊界框。Yolo網路速度極快,可以每秒45幀的速度實時處理圖像。其中一個較小規模的網路,被稱為Fast YOLO,甚至達到了令人咂舌的155幀/秒的處理速度。

下面我們來實現YOLO V3網路。首先,我們准備一個有700張包含土耳其車輛牌照的圖片的數據集,對每一張圖片,我們都使用一個桌面應用LabelImg標注出車牌位置並存入一個xml文件。數據下載及網路訓練腳本如下:

在網路訓練完之蔽培後,為了識別圖像中的車輛牌照,我們從darknet/custom/weights中選擇最新的模型並在文件object_detection_yolo.py中寫入其路徑名稱,我們也將使用yolov3.cfg文件,注釋掉訓練部分,然後執行:

這就是我們的結果:

現在我們要分割出我們的車牌號碼。這個步驟的輸入是車牌圖像,我們必須能夠提取出轎桐單個字元的圖像。由於這一步驟的輸出將用於識別步驟,因此對於一個車牌識別系統而言,車牌分割步驟非常重要。為了盡可能的正確分割車牌字元,我們需要進行必要的預處理。

像素投影直方圖用來找出字元區域的上限和下限、左邊及右邊。我們使用水平投影來找出字元的頂部 和底部位置,使用垂直投影來找出字元的左邊和右邊位置:

從車輛牌照中提取數字的另一個方法時使用形態學的開/閉操作來生成一些連通區域,然後再使用連通跟蹤演算法提取這些連通區域。

識別階段是我們的車牌自動檢測與識別系統的最後一個環節,識別是宏帆唯基於前面環節得到的單個字元圖像。我們的模型將對這些圖像進行預測,從而得到最終的車牌號碼。

為了盡可能利用訓練數據,我們將每個字元單獨切割,得到一個車牌字元數據集,該數據集中包含11個類(數字0-9以及阿拉伯單詞),每個類包含30~40張字元圖像,圖像為28X28的PNG格式。

然後,我們就多層感知器MLP和K近鄰分類器KNN的比較進行了一些調研,研究結果標明,對於多層感知器而言,如果隱層的神經元增多,那麼分類器的性能就會提高;同樣,對於KNN而言,性能也是隨著近鄰數量的增多而提高。不過由於KNN的可調整潛力要遠遠小於MLP,因此我們最終選擇在這個階段使用多層感知器MLP網路來識別分割後的車牌字元:

你可以在這里找到代碼及數據集:github

原文鏈接:車輛牌照自動檢測與識別 —— 匯智網

『貳』 有沒有微信小程序調用百度ai車輛識別介面的程序源碼,很簡單的就可以

class BaiDuAiBaseController extends BaseController
{
private $appid;
private $appKey;
private $secretKey;

public function __construct(){
$this->appid= config('api..appid');
$this->appKey = config('api..apikey');
$this->secretKey = config('api..secretkey');
}

//網路ai介面--文字識別--車牌號識別
public function getCarNumber($_imgurl,$_img=''){
$_token = $this->getToken();
$_url = 'https://aip.bce.com/rest/2.0/ocr/v1/license_plate?access_token='.$_token;
if($_img){
$_data = [
'image'=>$_img//圖像數據,base64編碼後進行urlencode,要求base64編碼和urlencode後大小不超過4M,最短邊至少15px,最長邊最大4096px,支持jpg/jpeg/png/bmp格式
];
}else{
$_data = [
'url'=>request()->domain().'/'.$_imgurl
];
}

$_res = json_decode(httpGet($_url,$_data),true);
//TODO 此處只返回false沒有終止,是因為程序執行流程需要,後期可能要改
if(isset($_res['error_msg'])) return false;
return $_res['words_result']['number'];
}

//獲取token
private function getToken(){
if(cache('_token')){
$_access_token = cache('_token');
}else{
$_url = 'https://aip.bce.com/oauth/2.0/token?grant_type=client_credentials&client_id='.$this->appKey.'&client_secret='.$this->secretKey;
$res = json_decode(httpGet($_url),true);
if(isset($res['error']))TApiException($res['error_description']);//終止程序並拋出異常
$_access_token = $res['access_token'];
$_expires_in = $res['expires_in'];
cache('_token',$_access_token,($_expires_in-1000));//我喜歡少存1000秒,沒有為什麼,問就是癖好
}
return $_access_token;
}
}

這是ThinkPhp5.1後端封裝的網路AI介面類,getToken()獲取憑證,getCarNumber()請求$_url 返回識別結果,這個是車牌號碼識別,車型識別等其他介面大部分都一樣,就換個請求地址$_url就行
//介面:
public function getImgCarNum(){
$_number = (new BaiDuAiBaseController())->getCarNumber(false,request()->param('img'));
return self::myShow('申請成功',['carNum'=>$_number]);
}
小程序端正常request請求上面的介面就行,下面是微信小程序拍照識別功能

//拍照
goImgSearch(){
uni.chooseImage({
count:1,
sizeType: ['compressed'],//original 原圖,compressed 壓縮
sourceType: ['album','camera'],//camera 相機 album相冊
success:(r)=>{
console.log(r)
//執行識別車牌號碼
this.img = r.tempFilePaths[0]
this.urlTobase64(r.tempFilePaths[0])
}
})
},
//識別車牌號碼
urlTobase64(url){
uni.showLoading({
title:'拚命識別車牌中..'
})
//#ifdef MP-WEIXIN
uni.getFileSystemManager().readFile({
filePath: url, //選擇圖片時返回的路徑
encoding: "base64",//這個是很重要的
success: res => { //成功的回調
//返回base64格式
let base64= 'data:image/jpeg;base64,' + res.data
//發送請求,識別車牌號碼
this.$H.post('/getImgCarNum',{
img:base64 //圖片數據
},{
token:true //必須登錄
}).then((res)=>{
console.log(res.carNum)
if(!res.carNum){
uni.hideLoading()
return uni.showModal({
title:'識別失敗',
content:'沒能識別到車牌號碼,請拍張清晰的圖片再試哦,謝謝',
showCancel:false
})
}
uni.showToast({
title:'識別車牌成功',
icon:'none'
})
this.searchUser = res.carNum
this.userCarNum = res.carNum
uni.hideLoading()
}).catch((e)=>{
uni.hideLoading()
return uni.showModal({
title:'識別失敗',
content:'沒能識別到車牌號碼,請拍張清晰的圖片再試哦,謝謝',
showCancel:false
})
})
},
fail:(e)=>{
console.log(e)
}
})
//#endif
},

熱點內容
c語言大於小於 發布:2024-11-30 06:54:43 瀏覽:499
如何知道老婆微信和密碼 發布:2024-11-30 06:46:16 瀏覽:848
java計劃 發布:2024-11-30 06:44:04 瀏覽:942
linux查看ftp日誌 發布:2024-11-30 06:33:19 瀏覽:475
設置截屏存儲 發布:2024-11-30 06:29:00 瀏覽:394
jpg演算法 發布:2024-11-30 06:28:55 瀏覽:195
怎麼刪除u盤中的文件夾 發布:2024-11-30 06:28:20 瀏覽:216
iphone文件夾打開 發布:2024-11-30 06:13:43 瀏覽:298
如何配置Javaweb環境 發布:2024-11-30 06:09:24 瀏覽:121
怎麼使用Androidapi 發布:2024-11-30 06:08:43 瀏覽:61