交通警察もそれは素晴らしいと思います-Pythonはナンバープレートを認識します

ナンバープレート認識は、コミュニティや地下に加えて、一般的な電子料金収受(ETC)システムや交通違反車両の検出など、高速道路で幅広い用途があります

ガレージアクセス制御も、基本的に車両の身元を検出する必要がある場所で使用されます。

画像の説明を追加してください

いくつかの背景:

ナンバープレート認識システム(車両ナンバープレート認識)は、車両のナンバープレート認識におけるコンピュータービデオ画像認識技術のアプリケーションです。

このシステムには、主に次の4つの部分が含まれています。

•車両画像の取得

•ナンバープレートの場所

•ナンバープレートの文字セグメンテーション

•ナンバープレートの文字認識

ウィキペディアのナンバープレート認識技術の説明を見てみましょう。

ナンバープレート認識技術には、ナンバープレート抽出、画像前処理、特徴抽出、ナンバープレート文字認識を通じて、複雑な背景から移動するナンバープレートを抽出して認識する機能が必要です。

さまざまな技術で車両のナンバープレートや色などの情報を識別できます。最新の技術レベルでは、文字と数字の認識率は99.7%に達し、漢字の認識率は99%に達する可能性があります。

画像の説明を追加してください

実現する方法

ここでは、あまり複雑な車両動的認識は行いませんが、画像からのナンバープレート情報の認識のみを示します。ナンバープレート認識機能を実装するには、2つの方法があります。1つは自分で作成する方法です。

コードの実装、もう1つは、サードパーティのAPIインターフェイスの実装によるものです。

自分で実装する

Pythonを介してナンバープレート認識機能を手動で実装する場合は、OpenCV、TensorFlowなどのPythonライブラリを使用できます。

各ファンクションポイントは自分でコーディングして実装する必要があるため、比較的複雑になりますが、認識精度を確保したい場合は、大きくする必要があります。

実験の量、つまりそれはより多くの時間がかかることを意味します。

サードパーティのインターフェイス

現在、一部のサードパーティプラットフォームはナンバープレート認識の機能を実装しており、APIインターフェイスを提供しているため、提供されているインターフェイスを呼び出すだけで済みます。

この方法は実装が比較的簡単で、通常、インターフェイスプロバイダーが提供するインターフェイス機能の精度は基本的に保証されます。理由は非常に単純です。インターフェイスの場合

機能が悪すぎると、まず顔を平手打ちされ、基本的に誰も使用しないため、インターフェースが提供する価値が失われ、サードパーティのインターフェースが課金される可能性があります。

ある程度の費用がかかるので、実際に実施する場合は、総合的に検討する必要があります。
画像の説明を追加してください

実装

上記の状況を踏まえ、ナンバープレート認識機能を実現するためにサードパーティのインターフェースを使用し、インターフェースプロバイダーとしてBaiduCloudが提供するインターフェースとBaiduCloudインターフェースを選択します。

無料の割り当てが提供されます。簡単に言えば、毎日無料で使用できる回数です。この回数を超える場合は、料金などを支払う必要があります。ドキュメントのアドレスは次のとおりです。

https://cloud.baidu.com/doc/OCR/index.html、特定の実装プロセスを見てみましょう。

SDKのインストール

Baidu Cloud SDKは、Python、Java、C ++、IOS、Androidなどの複数の言語をサポートします。ここでは、インストールが非常に簡単なPythonバージョンのSDKをインストールします。

簡単です。pipinstallbaidu-aipコマンドを使用するだけです。SDKはPythonバージョン2.7以降および3.xをサポートしています。SDKディレクトリ構造は次のとおりです。

Python学习交流Q群:660193417####
├── README.md
├── aip                   // SDK 目录│
├── __init__.py       // 导出类│   
├── base.py           // aip 基类│   
├── http.py           // http 请求│   
└── ocr.py //OCR└── setup.py              // setuptools 安装

アプリを作成する

SDKをインストールしたら、アプリケーションを作成する必要があります。ここでは、BaiduアカウントまたはBaidu Cloudアカウントが必要です。アカウントをお持ちでない場合は、自分で登録し、ログインして登録できます。

アドレスは次のとおりです:https://login.bce.baidu.com/?redirect = http%3A%2F%2Fcloud.baidu.com%2Fcampaign%2Fcampus-

2018%2Findex.htmlログイン後、次の図に示すように、マウスをログインアバターの位置に移動し、ポップアップメニューのユーザーセンターをクリックします。
画像の説明を追加してください
画像の説明を追加してください
情報を確認したら、をクリックします。保存ボタン。

次に、マウスを左の列>記号の位置に移動し、次の図に示すように、人工知能とテキスト認識を順番に選択します。クリックすると、次の図が表示され
画像の説明を追加してください
ます。
画像の説明を追加してください
[アプリケーションの作成]をクリックし、次のように入力します。図:
画像の説明を追加してください
ここでは、以下にアプリケーション名とアプリケーションの説明を入力するだけで、入力後に[今すぐ作成]をクリックします。

作成後、次の図に示すように、アプリケーションリストに戻ります。
画像の説明を追加してください
ここでは、AppID、APIキー、および秘密キーの3つの値を使用する必要があります。
画像の説明を追加してください

実装

アプリケーションが作成されたら、インターフェースを呼び出してナンバープレート認識機能を実現できます。

まず、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の作成後にインターフェースを呼び出してパラメーターを設定できます。現在、2つのパラメーターがサポートされています。コードの実装を見てみましょう。

# 建立连接的超时时间,单位为毫秒
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

やっと

この記事では、最初にナンバープレート認識を紹介し、次にBaiduクラウドインターフェイスを使用して、単一および複数のナンバープレートの認識機能を実現します。この記事を通じて、ナンバープレートを認識できます。

関連する概念と特定の実装についてある程度理解してください。今日の共有はここで終わります。次の章でお会いしましょう!
画像の説明を追加してください

おすすめ

転載: blog.csdn.net/m0_67575344/article/details/124331900