作者:恒創智能 ??時間:2021-03-26 10:26??來源:未知?? 瀏覽:次
實際生活中,車牌識別是很常見的:高速公路,停車系統,電子警察,甚至還有車載設備。
作為車牌識別專業廠商的恒創智能,為您講述車牌識別系統的工作原理及程序組成。
其工作原理大致是這樣的:使用攝像頭作為“眼睛”,使用 openCV和深度學習作為“大腦”。車輛牌照識別的實時工作步驟:攝像頭抓拍—> openCV對車牌位置進行初步定位——>對車牌位置的左右上下邊界進行二次確認——>車牌傾斜校正——>牌號字符分割——>字符識別。而車牌檢測是車牌識別的前提和重要基礎。
安卓車牌識別:android端使用openCV如何實現車牌檢測。
關于openCV的初始化,調用車牌識別JNI接口時,首先進行初始化,加載caffe訓練模型相關文件:
plateRecognition = new PlateRecognition(this, mHandler);
//init plate recognizer
new Thread(new Runnable() {
@Override
public void run() {
plateRecognition.initRecognizer("pr");
}
}).start();
攝像頭實時捕獲,并回調每幀數據以識別車牌線程。需要注意的是,車牌識別中openCV操作對象是Mat,而不是Bitmap:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
//每次進行車牌識別間隔3s
long currentTime = System.currentTimeMillis();
if((currentTime - lastRecognizeTime) > 3000){
lastRecognizeTime = currentTime;
//回調給車牌識別線程處理
if(onNewFrameListener != null){
onNewFrameListener.onNewFrame(inputFrame.rgba());
return inputFrame.rgba();
public void onNewFrame(Mat newFrame) {
if(dstMat == null){
dstMat = new Mat(newFrame.rows(), newFrame.cols(), CvType.CV_8UC4);
//mat格式轉換
newFrame.copyTo(dstMat);
//添加到車牌識別線程的隊列中
if(recognizeThread != null){
recognizeThread.addMat(dstMat);
其中,車牌識別線程調用native層執行,最終把識別結果返回給java層:
while (isRunning){
Mat mat = null;
synchronized (lock){
//從隊列取出mat對象
if(matQueue != null && matQueue.size() > 0){
mat = matQueue.poll();
//調用native層,執行車牌識別
if(mat != null && plateRecognition != null){
plateRecognition.doPlateRecognize(mat);
使用openCV的級聯分類器CascadeClassifier去檢測,得到車牌所在整個圖像的矩形區域,然后二次確認車牌的左右、上下邊界,判斷車牌是否發生傾斜,如果有傾斜則進行校正。通過滑動窗口來切割車牌字符,使用CNN深度學習對每個字符進行識別。最終得到識別結果與識別置信度,如果置信度大于一定閾值,那么該輪識別結果可靠。
購買車牌識別產品,認準恒創智能。
上一篇????智能翼閘在景區安裝有什么好處
下一篇????智能人行通道閘的分類方式與應用范圍
手機:15829680868
熱線:15829680868
網址:http://www.fzxaf.com
郵箱:[email protected]
地址:陜西省西安市高新區丈八街辦長安科技 園發展大道25號軍民融合創新港4層402室
Copyright@ 2014-2020 西安捷申達門業科技有限公司 All rights reserved.陜ICP備17007415號-4 網站地圖
友情鏈接:基金網 電子水處理器 校園智慧體育 磁懸浮門 成都電動門維修 數顯卡尺 鋼格板 滴滴友鏈 智能卡 深圳小產權房 NSK 穩定土拌合站廠家 一次性紙杯 kaunai.com 起來熱水器 外賣取餐柜
在線咨詢
聯系電話
微信咨詢
返回頂部