Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Rekisterikilpien tunnistus- ja tunnistustekniikalla on monia sovelluksia. Sitä voidaan käyttää tiejärjestelmissä, lipputtomilla pysäköintialueilla, ajoneuvojen kulunvalvontaasunnoissa ja muissa tiloissa. Tämä tekniikka yhdistää tietokonenäön ja tekoälyn.

Käytät Pythonia rekisterikilpien tunnistus- ja tunnistusohjelman luomiseen. Ohjelma ottaa syötekuvan, käsittelee sen tunnistaakseen ja tunnistaakseen rekisterikilven ja näyttää lopuksi rekisterikilven merkit lähtönä.

Python-ympäristön määrittäminen

Jotta voit jatkaa tätä opetusohjelmaa mukavasti, sinun on tunnettava Pythonin perusteet. Tämä alkaa ohjelman ympäristön asettamisesta.

Ennen kuin aloitat koodauksen, sinun on asennettava joitain kirjastoja ympäristöösi. Avaa mikä tahansa Python IDE ja luo Python-tiedosto. Suorita jokainen komento päätteessä asentaaksesi vastaava kirjasto. Sinulla pitäisi olla ennakko Python PIP: n asennus tietokoneellesi.

  • OpenCV-Python: Käytät tätä kirjastoa tulokuvan esikäsittelyyn ja erilaisten tulostekuvien näyttämiseen.
    pip Asentaa OpenCV-Python
  • imutils: Tämän kirjaston avulla voit rajata alkuperäisen syöttökuvan haluttuun leveyteen.
    pip Asentaa imutils
  • pytesserakti: Tämän kirjaston avulla voit purkaa rekisterikilven merkit ja muuntaa ne merkkijonoiksi.
    pip Asentaa pytesserakti
    Pytesseract-kirjasto perustuu Tesseact OCR moottori hahmojen tunnistamiseen.

Mikä Tesseract OCR on ja kuinka se asennetaan tietokoneellesi

Tesseract OCR on moottori, joka pystyy tunnistaa kielen merkkejä. Asenna se tietokoneellesi ennen pytesseract-kirjaston käyttöä. Tehdä niin:

  1. Avaa mikä tahansa Chrome-pohjainen selain
  2. Lataa Tesseact OCR perustaa
  3. Suorita asennus ja asenna se kuten mikä tahansa muu ohjelma

Kun olet valmistellut ympäristön ja asentanut tesseract OCR: n, olet valmis koodaamaan ohjelman.

1. Kirjastojen tuonti

Aloita tuomalla ympäristöön asentamasi kirjastot. Kirjastojen tuominen mahdollistaa kirjastojen kutsumisen ja toimintojen käytön projektissa.

tuonti cv2
tuonti imutils
tuonti pytesserakti

Sinun on tuotava OpenCV-Python kirjasto as cv2. Tuo muut kirjastot samoilla nimillä, joita käytit asentaessasi ne.

2. Syötteen ottaminen

Osoita sitten pytesseract paikkaan, johon Tesseract-moottori on asennettu. Ota auton kuva syötteeksi käyttämällä cv2.imread toiminto. Korvaa kuvan nimi käyttämäsi kuvan nimellä. Tallenna kuva samaan kansioon kuin projektisi, jotta asiat ovat helppoja.

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

Voit korvata seuraavan syöttökuvan sillä, jota haluat käyttää.

3. Tulon esikäsittely

Muuta kuvan leveydeksi 500 pikseliä. Muunna sitten kuva harmaasävyiksi näppärä reunantunnistustoiminto toimii vain harmaasävykuvien kanssa. Lopuksi soita bilateral Filter toiminto vähentää kuvan kohinaa.

alkuperäinen_kuva = imutils.resize (alkuperäinen_kuva, leveys = 500)
gray_image = cv2.cvtColor (alkuperäinen_kuva, cv2.COLOR_BGR2GRAY)
harmaa_kuva = cv2.bilateralFilter (harmaa_kuva, 11, 17, 17)

4. Rekisterikilven havaitseminen tulosta

Rekisterikilven tunnistaminen on prosessi, jossa määritetään autossa se osa, jossa on rekisterikilven merkit.

Suorittaa reunantunnistusta

Aloita soittamalla cv2.Canny toiminto, joka tunnistaa automaattisesti esikäsitellyn kuvan reunat.

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

Näistä reunoista löydämme ääriviivat.

Ääriviivojen löytäminen

Soita cv2.findContours toiminto ja lähetä kopio reunallinen kuva. Tämä toiminto tunnistaa ääriviivat. Piirrä alkuperäisen kuvan havaitut ääriviivat käyttämällä cv2.drawContours toiminto. Tulosta lopuksi alkuperäinen kuva, jossa kaikki näkyvät ääriviivat on piirretty.

ääriviivat, Uusi = cv2.findContours (edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = alkuperäinen_kuva.kopio()
cv2.drawContours(img1, ääriviivat, -1, (0, 255, 0), 3)
cv2.imshow("img1", img1)

Ohjelma piirtää kaikki autokuvasta löytämänsä ääriviivat selvästi.

Kun olet löytänyt ääriviivat, sinun on lajiteltava ne löytääksesi parhaat ehdokkaat.

Ääriviivojen lajittelu

Lajittele ääriviivat minimialueen 30 perusteella. Jätä alla olevat huomioimatta, koska ne eivät todennäköisesti ole rekisterikilven ääriviivat. Tee kopio alkuperäisestä kuvasta ja piirrä se top 30 ääriviivat kuvassa. Näytä lopuksi kuva.

ääriviivat = lajiteltu (ääriviivat, avain = cv2.contourArea, käänteinen = Totta)[:30]

# tallentaa rekisterikilven ääriviivan
screenCnt = Ei mitään
img2 = alkuperäinen_kuva.kopio()

# piirtää 30 parasta ääriviivaa
cv2.drawContours(img2, ääriviivat, -1, (0, 255, 0), 3)
cv2.imshow("img2", img2)

Nyt ääriviivoja on vähemmän kuin alussa. Ainoat piirretyt ääriviivat ovat sellaisia, joiden arvioidaan sisältävän rekisterikilven.

Lopuksi sinun on kierrettävä lajitellut ääriviivat ja määritettävä, mikä niistä on rekisterikilpi.

Silmukoiden yli 30 parhaan muodon

Luo for-silmukka kiertääksesi ääriviivojen yli. Etsi ääriviivaa, jossa on neljä kulmaa, ja määritä sen ympärysmitta ja koordinaatit. Tallenna rekisterikilven sisältävän ääriviivan kuva. Piirrä lopuksi rekisterikilven ääriviiva alkuperäiseen kuvaan ja näytä se.

laskenta = 0
idx = 7

c: lle ääriviivoissa:
# likimääräinen rekisterikilven ääriviiva
contour_perimeter = cv2.arcLength (c, Totta)
likimäärä = cv2.approxPolyDP(c, 0.018 * contour_perimeter, Totta)

# Etsi ääriviivoja neljällä kulmalla
joslen(noin)== 4:
screenCnt = n

# etsi rekisterikilven ääriviivan koordinaatit
x, y, w, h = cv2.boundingRect (c)
uusi_kuva = alkuperäinen_kuva [ y: y + h, x: x + w]

# tallentaa uuden kuvan
cv2.imwrite('./'+str (idx)+".png",new_img)
idx += 1
tauko

# piirtää rekisterikilven ääriviivat alkuperäiseen kuvaan
cv2.drawContours(alkuperäinen_kuva, [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow("havaittu rekisterikilpi", alkuperäinen_kuva )

Silmukan jälkeen ohjelmasi on tunnistanut rekisterikilven sisältävän ääriviivan. Se piirtää vain rekisterikilven ääriviivat.

5. Havaitun rekisterikilven tunnistaminen

Rekisterikilven tunnistaminen tarkoittaa rekisterikilven rajatun kuvan merkkien lukemista. Lataa aiemmin tallentamasi rekisterikilven kuva ja näytä se. Soita sitten pytesseract.image_to_string toiminto ja välitä rajattu rekisterikilven kuva. Tämä toiminto muuntaa kuvan merkit merkkijonoksi.

# rajatun rekisterikilven kuvan tiedostonimi
cropped_License_Plate = './7.png'
cv2.imshow("rajattulisenssilautanen", cv2.imread(rajattu_lisenssikilpi))

# muuntaa rekisterikilven merkit merkkijonoksi
text = pytesseract.image_to_string (cropped_License_Plate, lang="eng")

Rajattu rekisterikilpi näkyy alla. Siinä olevat merkit ovat tulos, jonka tulostat myöhemmin näytölle.

Kun olet havainnut ja tunnistanut rekisterikilven, olet valmis näyttämään tulosteen.

6. Ulostulon näyttäminen

Tämä on viimeinen vaihe. Tulostat poimitun tekstin näytölle. Tämä teksti sisältää rekisterikilven merkit.

Tulosta("Rekisterikilpi on:", teksti)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ohjelman odotetun tuloksen tulisi olla samanlainen kuin alla oleva kuva:

Rekisterikilven teksti näkyy terminaalissa.

Teroita Python-taitojasi

Auton rekisterikilpien havaitseminen ja tunnistaminen Pythonissa on mielenkiintoinen projekti. Se on haastavaa, joten sen pitäisi auttaa sinua oppimaan lisää Pythonista.

Ohjelmoinnissa harjoittelu on kielen hallinnan ydin. Jotta voit harjoitella taitojasi, sinun on työskenneltävä mielenkiintoisten projektien parissa.