Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Technologia wykrywania i rozpoznawania tablic rejestracyjnych ma wiele zastosowań. Może być stosowany w systemach drogowych, parkingach bez biletów, rezydencjach kontroli dostępu do pojazdów i nie tylko. Technologia ta łączy wizję komputerową i sztuczną inteligencję.

Użyjesz języka Python do stworzenia programu do wykrywania i rozpoznawania tablic rejestracyjnych. Program pobierze obraz wejściowy, przetworzy go w celu wykrycia i rozpoznania tablicy rejestracyjnej, a na końcu wyświetli znaki tablicy rejestracyjnej jako dane wyjściowe.

Konfigurowanie środowiska Pythona

Aby wygodnie przejść przez ten samouczek, musisz znać podstawy języka Python. Rozpoczyna się to od skonfigurowania środowiska programu.

Zanim zaczniesz kodować, musisz zainstalować kilka bibliotek w swoim środowisku. Otwórz dowolne środowisko IDE języka Python i utwórz plik języka Python. Uruchom każde polecenie na terminalu, aby zainstalować odpowiednią bibliotekę. Powinieneś mieć przeor

instalacja Pythona PIP na swoim komputerze.

  • OpenCV-Python: Będziesz używać tej biblioteki do wstępnego przetwarzania obrazu wejściowego i wyświetlania różnych obrazów wyjściowych.
    pypeć zainstalować OpenCV-Python
  • imutils: Użyjesz tej biblioteki do przycięcia oryginalnego obrazu wejściowego do żądanej szerokości.
    pypeć zainstalować imutils
  • piteserakt: Użyjesz tej biblioteki do wyodrębnienia znaków z tablicy rejestracyjnej i przekonwertowania ich na ciągi znaków.
    pypeć zainstalować piteserakt
    Biblioteka pytesseract opiera się na Tesseract OCR silnik do rozpoznawania znaków.

Czym jest Tesseract OCR i jak go zainstalować na komputerze

Tesseract OCR to silnik, który potrafi rozpoznawać znaki języka. Powinieneś zainstalować go na swoim komputerze przed użyciem biblioteki pytesseract. Aby to zrobić:

  1. Otwórz dowolną przeglądarkę opartą na Chrome
  2. Pobierz Tesseract OCR organizować coś
  3. Uruchom instalację i zainstaluj ją jak każdy inny program

Po przygotowaniu środowiska i zainstalowaniu tesseract OCR można przystąpić do kodowania programu.

1. Importowanie bibliotek

Rozpocznij od zaimportowania bibliotek zainstalowanych w środowisku. Zaimportowanie bibliotek pozwala na wywołanie i wykorzystanie ich funkcji w projekcie.

import cv2
import imutils
import piteserakt

Musisz zaimportować plik OpenCV-Python biblioteka jako cv2. Zaimportuj inne biblioteki, używając tych samych nazw, których użyłeś do ich zainstalowania.

2. Przyjmowanie danych wejściowych

Następnie wskaż pytesseract lokalizację, w której jest zainstalowany silnik Tesseract. Weź obraz samochodu jako dane wejściowe za pomocą cv2.imread funkcjonować. Zastąp nazwę obrazu nazwą obrazu, którego używasz. Przechowuj obraz w tym samym folderze co projekt, aby ułatwić sobie pracę.

pytesseract.pytesseract.tesseract_cmd = „C:\\Program Files\\Tesseract-OCR\\tesseract.exe”
obraz_oryginalny = cv2.imread(„obraz3.jpeg”)

Możesz zastąpić następujący obraz wejściowy tym, którego chcesz użyć.

3. Wstępne przetwarzanie danych wejściowych

Zmień szerokość obrazu na 500 pikseli. Następnie przekonwertuj obraz na skalę szarości jako sprytna funkcja wykrywania krawędzi działa tylko z obrazami w skali szarości. Na koniec zadzwoń do tel filtr dwustronny funkcję redukcji szumów obrazu.

oryginalny_obraz = imutils.resize (oryginalny_obraz, szerokość=500 )
szary_obraz = cv2.cvtColor (oryginalny_obraz, cv2.COLOR_BGR2GRAY)
szary_obraz = cv2.bilateralFilter (szary_obraz, 11, 17, 17)

4. Wykrywanie tablicy rejestracyjnej na wejściu

Wykrywanie tablicy rejestracyjnej to proces określania części samochodu, która ma znaki z tablicy rejestracyjnej.

Wykonywanie wykrywania krawędzi

Zacznij od wywołania cv2.Canny funkcja, która automatycznie wykryje krawędzie na wstępnie przetworzonym obrazie.

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

To z tych krawędzi znajdziemy kontury.

Znalezienie konturów

Zadzwoń do cv2.findKontury funkcji i przekazać kopię pliku obraz z krawędziami. Ta funkcja wykryje kontury. Narysuj wokół wykrytych konturów na oryginalnym obrazie, używając cv2.drawKontury funkcjonować. Na koniec wyślij oryginalny obraz z narysowanymi wszystkimi widocznymi konturami.

kontury, nowy = cv2.findContours (edge_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = oryginalny_obraz.kopia()
cv2.rysujKontury(img1, kontury, -1, (0, 255, 0), 3)
cv2.imshow("img1", img1)

Program wyraźnie rysuje wszystkie kontury, które znajdzie na obrazie samochodu.

Po znalezieniu konturów należy je posortować, aby zidentyfikować najlepszych kandydatów.

Sortowanie konturów

Posortuj kontury na podstawie minimalnej powierzchni 30. Zignoruj ​​te poniżej, ponieważ jest mniej prawdopodobne, że będą konturem tablicy rejestracyjnej. Zrób kopię oryginalnego obrazu i narysuj najlepsze 30 kontury na obrazie. Na koniec wyświetl obraz.

kontury = posortowane (kontury, klucz = cv2.contourArea, odwróć = PRAWDA)[:30]

# przechowuje kontur tablicy rejestracyjnej
screenCnt = Nic
img2 = oryginalny_obraz.kopia()

# rysuje 30 najlepszych konturów
cv2.rysujKontury(img2, kontury, -1, (0, 255, 0), 3)
cv2.imshow("img2", img2)

Jest teraz mniej konturów niż na początku. Jedyne narysowane kontury to te, które w przybliżeniu zawierają tablicę rejestracyjną.

Na koniec musisz zapętlić posortowane kontury i określić, który z nich jest tablicą rejestracyjną.

Zapętlanie ponad 30 najlepszych konturów

Utwórz pętlę for, aby zapętlić kontury. Poszukaj konturu z czterema rogami i określ jego obwód oraz współrzędne. Zapisz obraz konturu zawierającego tablicę rejestracyjną. Na koniec narysuj kontur tablicy rejestracyjnej na oryginalnym obrazie i wyświetl go.

liczba = 0
idx = 7

dla c w konturach:
# przybliżyć kontur tablicy rejestracyjnej
obwód_obrysu = cv2.arcLength (c, PRAWDA)
w przybliżeniu = cv2.w przybliżeniuPolyDP(c, 0.018 * kontur_obwodu, PRAWDA)

# Szukaj konturów z 4 rogami
JeśliLen(około)== 4:
screenCnt = ok

# znajdź współrzędne konturu tablicy rejestracyjnej
x, y, w, h = cv2.prostokąt ograniczający (c)
nowy_img = oryginalny_obraz [ y: y + h, x: x + w]

# przechowuje nowy obraz
cv2.imwrite('./'+str (idx)+'.png',nowy_img)
idx += 1
przerwa

# rysuje kontur tablicy rejestracyjnej na oryginalnym obrazie
cv2.rysujKontury(oryginalny obraz, [ekranCnt], -1, (0, 255, 0), 3)
cv2.imshow("wykryta tablica rejestracyjna", oryginalny obraz )

Po wykonaniu pętli program zidentyfikował kontur zawierający tablicę rejestracyjną. Rysuje tylko na konturze tablicy rejestracyjnej.

5. Rozpoznawanie wykrytej tablicy rejestracyjnej

Rozpoznanie tablicy rejestracyjnej polega na odczytaniu znaków na przyciętym obrazie tablicy rejestracyjnej. Załaduj poprzednio zapisany obraz tablicy rejestracyjnej i wyświetl go. Następnie zadzwoń do tel pytesseract.image_to_string funkcji i przekazać przycięty obraz tablicy rejestracyjnej. Ta funkcja konwertuje znaki w obrazie na łańcuch.

# nazwa pliku przyciętego obrazu tablicy rejestracyjnej
cropped_License_Plate = './7.png'
cv2.pokaż("przyciętelicencjapłyta", cv2.przeczytane(cropped_license_tablica))

# konwertuje znaki tablicy rejestracyjnej na łańcuch
text = pytesseract.image_to_string (cropped_License_Plate, lang=„pol”)

Przycięta tablica rejestracyjna jest pokazana poniżej. Znaki na nim będą wynikiem, który później wydrukujesz na ekranie.

Po wykryciu i rozpoznaniu tablicy rejestracyjnej jesteś gotowy do wyświetlenia wyniku.

6. Wyświetlanie danych wyjściowych

To jest ostatni krok. Drukujesz wyodrębniony tekst na ekranie. Ten tekst zawiera znaki z tablicy rejestracyjnej.

wydrukować(„Tablica rejestracyjna to:”, tekst)
cv2.klucz oczekiwania(0)
cv2.destroyAllWindows()

Oczekiwany wynik działania programu powinien być podobny do poniższego obrazka:

Tekst tablicy rejestracyjnej można zobaczyć na terminalu.

Doskonal swoje umiejętności w Pythonie

Wykrywanie i rozpoznawanie tablic rejestracyjnych samochodów w Pythonie to ciekawy projekt do pracy. To wyzwanie, więc powinno pomóc ci dowiedzieć się więcej o Pythonie.

Jeśli chodzi o programowanie, praktyka jest kluczem do opanowania języka. Aby ćwiczyć swoje umiejętności, musisz pracować nad ciekawymi projektami.