如何用 Python 識別車牌

来源:https://www.cnblogs.com/123456feng/archive/2022/04/19/16165470.html
-Advertisement-
Play Games

車牌識別在高速公路中有著廣泛的應用,比如我們常見的電子收費(ETC)系統和交通違章車輛的檢測,除此之外像小區或地下 車庫門禁也會用到,基本上凡是需要對車輛進行身份檢測的地方都會用到。 簡介 車牌識別系統(Vehicle License Plate Recognition)是電腦視頻圖像識別技術在車 ...


車牌識別在高速公路中有著廣泛的應用,比如我們常見的電子收費(ETC)系統和交通違章車輛的檢測,除此之外像小區或地下

車庫門禁也會用到,基本上凡是需要對車輛進行身份檢測的地方都會用到。

在這裡插入圖片描述

簡介

車牌識別系統(Vehicle License Plate Recognition)是電腦視頻圖像識別技術在車輛牌照識別中的一種應用,通常一個車牌識

別系統主要包括以下這四個部分:

•車輛圖像獲取

•車牌定位

•車牌字元分割

•車牌字元識別

我們再來看一下百科中對車牌識別技術的描述:

車牌識別技術要求能夠將運動中的汽車牌照從複雜背景中提取並識別出來,通過車牌提取、圖像預處理、特征提取、車牌字元識

別等技術,識別車輛牌號、顏色等信息,目前最新的技術水平為字母和數字的識別率可達到 99.7%,漢字的識別率可達到 99%。

在這裡插入圖片描述

實現方式

我們這裡不做太複雜的車輛動態識別,只演示從圖像中識別車牌信息,車牌識別功能的實現方式大致分為兩種,一種是自己編寫

代碼實現,另一種是藉助第三方 API 介面實現。

自己實現

如果我們想要通過 Python 自己手動編碼實現車牌識別功能,可以藉助一些 Python 庫,比如:OpenCV、TensorFlow 等,這種方

式因為每一個功能點都需要我們自己編碼實現,所有會相對複雜一些,另一方面如果我們想要保證識別的準確性,可能需要做大

量的實驗,也就是說會花費更多的時間。

第三方介面

現在已經有一些第三方平臺實現好了車牌識別的功能,並且他們對外提供了 API 介面,我們只需要調用他們提供的介面即可,這

種方式實現就相對簡單了一些,並且通常介面提供方對外提供的介面功能的準確性也是基本可以保證的,原因很簡單,如果介面

功能太差的話,一是自己打臉,還有就是基本不會有什麼人使用,也就失去了介面對外提供的價值了,另外第三方介面可能會收

取一定費用,因此,如果現實中我們具體實現的話要綜合考慮。

在這裡插入圖片描述

具體實現

綜合上面的情況,我們這裡採用第三方介面的方式來實現車牌識別的功能,介面提供方我們選擇百度雲提供的介面,百度雲介面

提供了免費額度,簡單來說就是每天可以免費使用多少次,如果超過了這個次數就需要交錢什麼的了,文檔地址為:

https://cloud.baidu.com/doc/OCR/index.html,下麵來看一下具體實現過程。

SDK 安裝

百度雲 SDK 對多種語言提供了支持,比如:Python、Java、C++、IOS、Android 等,這裡我們安裝 Python 版的 SDK,安裝很

簡單,使用 pip install baidu-aip 命令即可,SDK 支持 Python 的版本為:2.7+ 與 3.x,SDK 目錄結構如下:

Python學習交流Q群:906715085####
├── README.md
├── aip                   // SDK 目錄│
├── __init__.py       // 導出類│   
├── base.py           // aip 基類│   
├── http.py           // http 請求│   
└── ocr.py //OCR└── setup.py              // setuptools 安裝

 

創建應用

SDK 安裝好後,我們接著需要創建應用了,這裡需要一個百度賬號或百度雲賬號,如果沒有的話自己註冊一個即可,登錄及註冊

地址為:https://login.bce.baidu.com/?redirect=http%3A%2F%2Fcloud.baidu.com%2Fcampaign%2Fcampus-

2018%2Findex.html,登錄之後,我們將滑鼠移動到登錄頭像位置,接著在彈出菜單中單擊用戶中心,如下圖所示:

在這裡插入圖片描述

如果是首次進入的話,勾選一下相應信息,如下圖所示:

在這裡插入圖片描述

信息勾選完了之後,點擊保存按鈕。

接著將滑鼠移動到左側欄中 > 符號位置,再依次選擇人工智慧和文字識別,如下圖所示:
在這裡插入圖片描述

點擊之後會進入到下圖中:

在這裡插入圖片描述

我們點擊創建應用,進入下圖中:
在這裡插入圖片描述

這裡我們只需要填一下應用名稱和下麵的應用描述即可,填寫完畢之後點擊立即創建。

創建完後,我們再返回應用列表,如下圖所示:
在這裡插入圖片描述

這裡我們需要用到三個值:AppID、API Key 和 Secret Key。

在這裡插入圖片描述

具體實現

應用創建完了,我們就可以調用介面實現車牌識別功能了。

首先,我們要創建 AipOcr,AipOcr 是 OCR 的 Python SDK 客戶端,為使用 OCR 的開發人員提供了一系列的交互方法,代碼實

現也比較簡單,如下所示:

from aip import AipOcr
# 自己的 APPID AK SKAPP_
ID = '自己的 App 
ID'API_KEY = '自己的 Api Key'
SECRET_KEY = '自己的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)

 

在上面代碼中,常量 APP_ID、API_KEY 和 SECRET_KEY 就是我們在查看應用列表時說的需要用到的常量值,這些值均為字元

串,用於標識用戶,為訪問做簽名驗證。

如果我們需要配置 AipOcr 的網路請求參數,可以在構造 AipOcr 之後調用介面設置參數,目前支持兩個參數,看一下代碼實現:

# 建立連接的超時時間,單位為毫秒
client.setConnectionTimeoutInMillis(5000)
# 通過打開的連接傳輸數據的超時時間,單位為毫秒client.setSocketTimeoutInMillis(5000)

 

總的來說通過介面方式實現車牌識別功能是比較簡單的,以如下圖為例:

在這裡插入圖片描述

實現代碼如下:

from aip import AipOcrAPP_ID = '自己的 App ID'API_KEY = '自己的 Api Key'SECRET_KEY = '自己的 Secret Key'# 創建客戶端對象client = AipOcr(APP_ID, API_KEY, SECRET_KEY)# 建立連接的超時時間,單位為毫秒client.setConnectionTimeoutInMillis(5000)# 通過打開的連接傳輸數據的超時時間,單位為毫秒client.setSocketTimeoutInMillis(5000)# 讀取圖片def get_file_content(filePath):    with open(filePath, 'rb') as fp:        return fp.read()image = get_file_content('car.jpeg')res = client.licensePlate(image)print('車牌號碼:' + res['words_result']['number'])print('車牌顏色:' + res['words_result']['color'])

 

執行結果:

車牌號碼:川QK9777車牌顏色:blue

上面代碼實現的是對一張圖片中的一個車牌進行識別,當然介面還支持對一張圖片中的多個車牌進行識別,只需使用

licensePlate(image, options) 即可, 以如下圖為例:

在這裡插入圖片描述

實現代碼如下:

from aip import AipOcr
APP_ID = '自己的 App ID'API_KEY = '自己的 Api Key'SECRET_KEY = '自己的 Secret Key'# 創建客戶端對象client = AipOcr(APP_ID, API_KEY, SECRET_KEY)# 建立連接的超時時間,單位為毫秒client.setConnectionTimeoutInMillis(5000)# 通過打開的連接傳輸數據的超時時間,單位為毫秒client.setSocketTimeoutInMillis(5000)
# 讀取圖片def get_file_content(filePath):    with open(filePath, 'rb') as fp:        return fp.read()
image = get_file_content('cars.png')options = {}# 參數 multi_detect 預設為 falseoptions['multi_detect'] = 'true'res = client.licensePlate(image, options)for wr in res['words_result']:    print('車牌號碼:' + wr['number'])    print('車牌顏色:' + wr['color'])

 

執行結果:

車牌號碼:京N6HZ61
車牌顏色:blue
車牌號碼:魯NS1A26
車牌顏色:blue

 

最後
本文我們先對車牌識別進行了一些介紹,之後利用百度雲介面實現了單個和多個車牌的識別功能,通過本文我們可以對車牌識別

的相關概念和具體實現有一些瞭解。今天的分享到這裡就結束了,下一章見啦!!!

在這裡插入圖片描述


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #QQ:[email protected]#本截圖適合安康碼截圖,如需其他地區截圖統計,可與我QQ或QQ郵箱聯繫#1、在當前文件夾下創建imgs文件夾用於存放圖片,圖片格式.jpg#2、在當前文件夾下創建“shuju.xlsx”的Excel用於存放統計結果文件夾目錄樣式 統計結果Excel樣式 具體代 ...
  • 昨天有個粉絲加了我,問我如何實現類似shiro的資源許可權表達式的訪問控制。我以前有一個小框架用的就是shiro,許可權控制就用了資源許可權表達式,所以這個東西對我不陌生,但是在Spring Security中我並沒有使用過它,不過我認為Spring Security可以實現這一點。是的,我找到了實現它的 ...
  • Python 能做很多無聊,但有意思的事情,例如接下來的一些案例。 Python 整蠱程式 以下程式,不要發代碼,要不實現不了你整蠱的目的。 要打包成一個 exe 程式,發給朋友才有意思。 使用 pip install pyinstaller。 打包命令如下: pyinstaller -F 文件名. ...
  • 引用 引用的基本使用 作用:給變數起別名 語法:數據類型 &別名 = 原名 引用註意事項 引用必須初始化 引用一旦初始化,就不可以更改(一個別名只能初始化一次:只可以跟一個原名) 引用做函數參數 函數傳參時,可以用引用技術讓形參修飾實參 簡化指針修飾形參 #include<iostream> usi ...
  • Spring 配置文件自定義標簽的前置條件 在上一篇文章https://www.cnblogs.com/redwinter/p/16165274.html Spring BeanFactory的創建過程中瞭解了BeanDefinition的載入和BeanFactory的創建,並且提到了Spring留 ...
  • 本文實現用Python將文本文件自動保存到Excel表格裡面去。 需求 將錦江區.txt 文件中的數據整理到 錦江區.xlsx 的 錦江區 sheet ; 將推薦菜欄位丟棄(保留前面14個欄位) ; 將人均消費中的 ¥ 符號去掉,如果價格為空整條數據都不要; 成果展示 txt文本部分數據 效果 稍微 ...
  • 1.導包(配置pom.xml) 一定要用這個網站:https://mvnrepository.com/ 點擊查看代碼 <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.4 ...
  • 控制小數位數 控制數值變大變小 數字轉漢字格式 引入 cn.hutool.core.convert 包 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...