検索
ホームページバックエンド開発Python チュートリアルPython を使用してナンバー プレートを検出および認識するにはどうすればよいですか?

翻訳者|Bugatti

レビュアー|Sun Shujuan

ナンバープレートの検出および認識テクノロジーは広く使用されており、道路システム、チケットレス駐車場、車両入退室管理などこのテクノロジーは、コンピューター ビジョンと人工知能を組み合わせたものです。

この記事では、Python を使用してナンバー プレートの検出および認識プログラムを作成します。プログラムは入力画像を処理し、ナンバー プレートを検出および認識し、最終的にナンバー プレートの文字を出力として表示します。

1. Python 環境を作成する

このチュートリアルを簡単に完了するには、Python の基本を理解している必要があります。最初にプログラム環境を作成する必要があります。

プログラミングを開始する前に、環境にいくつかのライブラリをインストールする必要があります。任意の Python IDE を開き、Python ファイルを作成します。ターミナルでコマンドを実行して、対応するライブラリをインストールします。 Python PIP がコンピューターにプリインストールされている必要があります。

  • #OpenCV-Python: このライブラリを使用して、入力画像を前処理し、個々の出力画像を表示します。 pip install OpenCV-Python
  • imutils: このライブラリを使用して、元の入力画像を希望の幅にトリミングします。 pip install imutils
  • pytesseract: このライブラリを使用して、ナンバー プレートの文字を抽出し、文字列に変換します。 pip install pytesseract pytesseract ライブラリは、文字認識のために Tesseract OCR エンジンに依存しています。

2. Tesseract OCR をコンピュータにインストールするにはどうすればよいですか?

Tesseract OCR は、言語の文字を認識できるエンジンです。 pytesseract ライブラリを使用する前に、コンピュータにインストールする必要があります。手順は次のとおりです:

#1. 任意の Chrome ベースのブラウザを開きます。

2. Tesseract OCR インストーラーをダウンロードします。

3. インストーラーを実行し、他のプログラムと同様にインストールします。

環境を準備し、tesseract OCR をインストールしたら、プログラムを作成できます。

1. ライブラリのインポート

まず、環境にインストールされているライブラリをインポートします。ライブラリをインポートすると、プロジェクト内でその関数を呼び出して使用できるようになります。

  • import cv2
  • import imutils
  • import pytesseract

必要なものOpenCV-Python ライブラリを cv2 形式でインポートします。インストール時と同じ名前を使用して他のライブラリをインポートします。

2. 入力

を取得し、pytesseract に Tesseract エンジンがインストールされている場所を指定します。 cv2.imread 関数を使用して、車の画像を入力として取得します。イメージ名を、使用しているイメージの名前に置き換えます。使いやすくするために、画像をプロジェクトと同じフォルダーに保存します。

pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe'
original_image = cv2.imread('image3.jpeg')

以下の入力画像を使用したい画像に置き換えることができます。

3. 入力の前処理

画像の幅を 500 ピクセルに調整し、鋭いエッジ検出機能のみを使用して画像をグレースケールに変換しますグレースケール画像で動作します。最後に、画像ノイズを低減するために、関数 bilarateFilter が呼び出されます。

original_image = imutils.resize(original_image, width=500 )
gray_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)
gray_image = cv2.bilateralFilter(gray_image, 11, 17, 17)

4. 入力端でナンバー プレートを検出する

ナンバー プレートの検出は、車のどの部分が故障しているかを判断するプロセスです。ナンバープレートの文字が入っています。

(1) エッジ検出の実行

まず、前処理エッジを自動的に検出できる cv2.Canny 関数を呼び出します。画像上にあります。

edged_image = cv2.Canny(gray_image, 30,200)

これらのエッジを通して輪郭を見つけます。

(2) 輪郭の検索

cv2.findContours 関数を呼び出し、エッジ イメージのコピーを渡します。この機能は輪郭を検出します。 cv2.drawContours 関数を使用して、検出された輪郭を元の画像上に描画します。最後に、目に見える輪郭がすべて描かれた元の画像を出力します。

contours, new = cv2.findContours(edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = original_image.copy()
cv2.drawContours(img1, contours, -1, (0, 255, 0), 3)
cv2.imshow("img1", img1)

プログラムは、車の画像上で見つかったすべての輪郭を描画します。

Python を使用してナンバー プレートを検出および認識するにはどうすればよいですか?

等高線を見つけたら、それをフィルタリングして最適な候補の等高線を特定する必要があります。

(3) 等高線のフィルタリング

最小面積 30 に基づいて等高線をフィルタリングします。この領域より小さい輪郭は、ナンバー プレートの輪郭である可能性が低いため、無視されます。元の画像のコピーを作成し、画像上に最初の 30 個の輪郭を描画します。最後に画像が表示されます。

contours = sorted(contours, key = cv2.contourArea, reverse = True)[:30]
# stores the license plate contour
screenCnt = None
img2 = original_image.copy()

# draws top 30 contours
cv2.drawContours(img2, contours, -1, (0, 255, 0), 3)
cv2.imshow("img2", img2)

アウトラインの数は最初よりも減りました。描画される輪郭は、ナンバー プレートをほぼ含む輪郭のみです。

Python を使用してナンバー プレートを検出および認識するにはどうすればよいですか?

最後に、フィルタリングされたアウトラインを繰り返し処理し、どれがナンバー プレートであるかを判断する必要があります。

(4) 最初の 30 個の輪郭を横断する

輪郭を横断する for ループを作成します。 4 つの角を持つ輪郭を見つけて、その周囲と座標を決定します。ナンバープレートの輪郭を含む画像を保存します。最後に、元の画像上にナンバープレートの輪郭を描画して表示します。

count = 0
idx = 7

for c in contours:
# approximate the license plate contour
contour_perimeter = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.018 * contour_perimeter, True)

# Look for contours with 4 corners
if len(approx) == 4:
screenCnt = approx

# find the coordinates of the license plate contour
x, y, w, h = cv2.boundingRect(c)
new_img = original_image [ y: y + h, x: x + w]

# stores the new image
cv2.imwrite('./'+str(idx)+'.png',new_img)
idx += 1
break

# draws the license plate contour on original image
cv2.drawContours(original_image , [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow("detected license plate", original_image )

ループの後、プログラムはナンバー プレートを含む輪郭を特定しました。

Python を使用してナンバー プレートを検出および認識するにはどうすればよいですか?

5.识别检测到的车牌

识别车牌意味着读取已裁剪车牌图像上的字符。加载之前存储的车牌图像并显示它。然后,调用pytesseract.image_to_string函数,传递已裁剪的车牌图像。这个函数将图像中的字符转换成字符串。

# filename of the cropped license plate image
cropped_License_Plate = './7.png'
cv2.imshow("cropped license plate", cv2.imread(cropped_License_Plate))

# converts the license plate characters to string
text = pytesseract.image_to_string(cropped_License_Plate, lang='eng')

已裁剪的车牌如下所示。上面的字符将是您稍后在屏幕上输出的内容。

Python を使用してナンバー プレートを検出および認識するにはどうすればよいですか?

检测并识别车牌之后,您就可以显示输出了。

6.显示输出

这是最后一步。您将提取的文本输出到屏幕上。该文本含有车牌字符。

print("License plate is:", text)
cv2.waitKey(0)
cv2.destroyAllWindows()

程序的预期输出应该如下图所示:

Python を使用してナンバー プレートを検出および認識するにはどうすればよいですか?

车牌文本可以在终端上看到。

三、磨砺您的Python技能

用Python检测和识别车牌是一个有意思的项目。它有挑战性,所以应该会帮助您学到关于Python的更多知识。

说到编程,实际运用是掌握一门语言的关键。为了锻炼技能,您需要开发有意思的项目。

原文链接:https://www.makeuseof.com/python-car-license-plates-detect-and-recognize/

以上がPython を使用してナンバー プレートを検出および認識するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

アレイの均質な性質はパフォーマンスにどのように影響しますか?アレイの均質な性質はパフォーマンスにどのように影響しますか?Apr 25, 2025 am 12:13 AM

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?実行可能なPythonスクリプトを作成するためのベストプラクティスは何ですか?Apr 25, 2025 am 12:11 AM

craftexecutablepythonscripts、次のようになります

numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?numpyアレイは、アレイモジュールを使用して作成された配列とどのように異なりますか?Apr 24, 2025 pm 03:53 PM

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Numpyアレイの使用は、Pythonで配列モジュール配列の使用と比較してどのように比較されますか?Apr 24, 2025 pm 03:49 PM

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

CTypesモジュールは、Pythonの配列にどのように関連していますか?CTypesモジュールは、Pythonの配列にどのように関連していますか?Apr 24, 2025 pm 03:45 PM

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール