Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Tehnologija otkrivanja i prepoznavanja registarskih pločica ima mnoge primjene. Može se koristiti u cestovnim sustavima, parkiralištima bez ulaznica, rezidencijama za kontrolu pristupa vozila i još mnogo toga. Ova tehnologija kombinira računalni vid i umjetnu inteligenciju.

Koristit ćete Python za izradu programa za otkrivanje i prepoznavanje registarskih pločica. Program će uzeti ulaznu sliku, obraditi je da detektira i prepozna registarsku pločicu i na kraju prikazati znakove registarske pločice kao izlaz.

Postavljanje Python okruženja

Kako biste bez problema pratili ovaj vodič, morate biti upoznati s osnovama Pythona. Ovo počinje postavljanjem okruženja programa.

Prije nego počnete kodirati, trebate instalirati neke biblioteke u svoje okruženje. Otvorite bilo koji Python IDE i izradite Python datoteku. Pokrenite svaku naredbu na terminalu da biste instalirali odgovarajuću biblioteku. Trebao bi imati prethodno instalacija Python PIP-a na vašem računalu.

instagram viewer
  • OpenCV-Python: Koristit ćete ovu biblioteku za pretprocesiranje ulazne slike i prikazivanje raznih izlaznih slika.
    pip instalirati OpenCV-Python
  • imutils: Koristit ćete ovu biblioteku za obrezivanje izvorne ulazne slike na željenu širinu.
    pip instalirati imutils
  • pytesseract: Koristit ćete ovu biblioteku za izdvajanje znakova registarske pločice i njihovo pretvaranje u nizove.
    pip instalirati pytesseract
    Knjižnica pytesseract oslanja se na Tesseract OCR motor za prepoznavanje znakova.

Što je Tesseract OCR i kako ga instalirati na svoje računalo

Tesseract OCR je motor koji može prepoznati znakove jezika. Trebali biste ga instalirati na svoje računalo prije korištenja biblioteke pytesseract. Učiniti tako:

  1. Otvorite bilo koji preglednik temeljen na Chromeu
  2. Preuzmite Tesseract OCR postaviti
  3. Pokrenite postavku i instalirajte je kao bilo koji drugi program

Nakon što ste pripremili okruženje i instalirali tesseract OCR, spremni ste za kodiranje programa.

1. Uvoz knjižnica

Započnite s uvozom biblioteka koje ste instalirali u okruženju. Uvoz knjižnica omogućuje vam pozivanje i korištenje njihovih funkcija u projektu.

uvoz cv2
uvoz imutils
uvoz pytesseract

Morate uvesti OpenCV-Python knjižnica kao cv2. Uvezite druge biblioteke koristeći iste nazive koje ste koristili za njihovu instalaciju.

2. Uzimanje unosa

Zatim usmjerite pytesseract na mjesto gdje je instaliran Tesseract motor. Uzmite sliku automobila kao ulaz pomoću cv2.imread funkcija. Zamijenite naziv slike nazivom slike koju koristite. Pohranite sliku u istu mapu u kojoj je vaš projekt kako biste olakšali rad.

pytesseract.pytesseract.tesseract_cmd = 'C:\\Programske datoteke\\Tesseract-OCR\\tesseract.exe'
originalna_slika = cv2.imread('image3.jpeg')

Sljedeću ulaznu sliku možete zamijeniti onom koju želite koristiti.

3. Predprocesiranje ulaza

Promijenite veličinu slike na 500 piksela. Zatim pretvorite sliku u sive tonove kao Canny funkcija detekcije rubova radi samo sa slikama u sivim tonovima. Na kraju, nazovite dvostraniFilter funkcija za smanjenje šuma na slici.

originalna_slika = imutils.resize (originalna_slika, širina=500)
siva_slika = cv2.cvtColor (originalna_slika, cv2.COLOR_BGR2GRAY)
siva_slika = cv2.bilateralni filtar (siva_slika, 11, 17, 17)

4. Otkrivanje registarske pločice na ulazu

Detekcija registarske pločice je postupak utvrđivanja dijela na automobilu koji ima znakove registarske pločice.

Izvođenje otkrivanja rubova

Započnite pozivom cv2.Ljubav funkcija koja će automatski detektirati rubove na pretprocesiranoj slici.

rubna_slika = cv2.Canny (siva_slika, 30, 200)

Iz tih rubova ćemo pronaći konture.

Pronalaženje kontura

Nazovite cv2.findContours funkcionirati i proslijediti kopiju obrubljena slika. Ova funkcija će detektirati konture. Nacrtajte otkrivene konture na izvornoj slici pomoću cv2.drawContours funkcija. Na kraju ispišite izvornu sliku sa svim iscrtanim vidljivim konturama.

konture, novi = cv2.findContours (edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = originalna_slika.copy()
cv2.drawContours(img1, konture, -1, (0, 255, 0), 3)
cv2.imshow("img1", img1)

Program jasno crta sve konture koje pronađe na slici automobila.

Nakon što pronađete konture, morate ih sortirati kako biste identificirali najbolje kandidate.

Razvrstavanje kontura

Razvrstaj konture na temelju minimalne površine 30. Zanemarite one ispod jer je manja vjerojatnost da su one obris registarske pločice. Napravite kopiju izvorne slike i nacrtajte prvih 30 konture na slici. Na kraju, prikažite sliku.

konture = sortirano (konture, ključ = cv2.contourArea, obrnuto = Pravi)[:30]

# pohranjuje konturu registarske pločice
screenCnt = Nijedan
img2 = originalna_slika.copy()

# crta prvih 30 kontura
cv2.drawContours(img2, konture, -1, (0, 255, 0), 3)
cv2.imshow("img2", img2)

Sada ima manje kontura nego na početku. Jedine nacrtane konture su one koje približno sadrže registarsku pločicu.

Na kraju, trebate proći kroz razvrstane konture i odrediti koja je registarska pločica.

Prelazak preko 30 najboljih kontura

Napravite for petlju za petlju preko kontura. Potražite konturu s četiri kuta, odredite joj opseg i koordinate. Pohranite sliku konture koja sadrži registarsku pločicu. Na kraju nacrtajte konturu registarske pločice na izvornoj slici i prikažite je.

broj = 0
idx = 7

za c u konturama:
# približiti konturu registarske pločice
contour_perimeter = cv2.arcLength (c, Pravi)
approx = cv2.approxPolyDP(c, 0.018 * kontura_perimetar, Pravi)

# Potražite konture s 4 ugla
akoleća(cca)== 4:
screenCnt = pribl

# pronađite koordinate konture registarske pločice
x, y, w, h = cv2.boundingRect (c)
nova_img = originalna_slika [ y: y + h, x: x + w]

# pohranjuje novu sliku
cv2.imwrite('./'+str (idx)+'.png',nova_img)
idx += 1
pauza

# crta konturu registarske pločice na izvornoj slici
cv2.drawContours(originalna_slika, [screenCnt], -1, (0, 255, 0), 3)
cv2.imshow("otkrivena registarska pločica", originalna_slika )

Nakon petlje, vaš je program identificirao konturu koja sadrži registarsku pločicu. Crta samo po konturi registarske pločice.

5. Prepoznavanje otkrivene registarske pločice

Prepoznavanje registarske pločice znači čitanje znakova na izrezanoj slici registarske pločice. Učitajte sliku registarske pločice koju ste prethodno pohranili i prikažite je. Zatim nazovite pytesseract.image_to_string funkcionirati i proslijediti izrezanu sliku registarske pločice. Ova funkcija pretvara znakove na slici u niz znakova.

# naziv datoteke izrezane slike registarske pločice
obrezana_registarska_pločica = './7.png'
cv2.imshow("ošišanlicencijatanjur", cv2.imread(obrezana_registarska_pločica))

# pretvara znakove registarske pločice u string
text = pytesseract.image_to_string (cropped_License_Plate, lang='eng')

Izrezana registarska pločica prikazana je u nastavku. Znakovi na njemu bit će ispis koji ćete kasnije ispisati na ekranu.

Nakon što ste otkrili i prepoznali registarsku pločicu, spremni ste za prikaz rezultata.

6. Prikaz izlaza

Ovo je posljednji korak. Izdvojeni tekst ispisujete na ekran. Ovaj tekst sadrži znakove registarske pločice.

ispisati("Registračka pločica je:", tekst)
cv2.čekajKljuč(0)
cv2.uništiSveWindowse()

Očekivani rezultat programa trebao bi biti sličan slici ispod:

Tekst registarske pločice može se vidjeti na terminalu.

Izoštrite svoje vještine Pythona

Detektiranje i prepoznavanje automobilskih tablica u Pythonu zanimljiv je projekt na kojem treba raditi. Izazovno je, pa bi vam trebalo pomoći da naučite više o Pythonu.

Kada je u pitanju programiranje, praksa je ključna za ovladavanje jezikom. Da biste vježbali svoje vještine, morate raditi na zanimljivim projektima.