Plaka algılama ve tanıma teknolojisinin birçok uygulaması vardır. Yol sistemlerinde, biletsiz otoparklarda, araç geçiş kontrol konutlarında ve daha fazlasında kullanılabilir. Bu teknoloji, bilgisayar görüşünü ve Yapay Zekayı birleştirir.
Bir plaka algılama ve tanıma programı oluşturmak için Python'u kullanacaksınız. Program giriş görüntüsünü alacak, plakayı algılamak ve tanımak için işleyecek ve son olarak plaka karakterlerini çıktı olarak gösterecektir.
Python Ortamını Kurma
Bu öğreticiyi rahatça takip etmek için Python temel bilgilerine aşina olmanız gerekir. Bu, programın ortamını ayarlamakla başlar.
Kodlamaya başlamadan önce, ortamınıza bazı kitaplıklar yüklemeniz gerekir. Herhangi bir Python IDE'yi açın ve bir Python dosyası oluşturun. İlgili kitaplığı yüklemek için terminaldeki her komutu çalıştırın. bir önceliğin olmalı bilgisayarınıza Python PIP kurulumu.
-
OpenCV-Python: Bu kitaplığı giriş görüntüsünü ön işlemek ve çeşitli çıktı görüntülerini görüntülemek için kullanacaksınız.
bip düzenlemek OpenCV-Python
-
imutils: Orijinal girdi görüntüsünü istenen genişliğe kırpmak için bu kitaplığı kullanacaksınız.
bip düzenlemek imutils
-
pytesseract: Bu kitaplığı, plaka karakterlerini çıkarmak ve bunları dizelere dönüştürmek için kullanacaksınız.
pytesseract kitaplığı şuna dayanır: Tesseract OCR Karakter tanıma motoru.bip düzenlemek pytesseract
Tesseract OCR Nedir ve Bilgisayarınıza Nasıl Kurulur?
Tesseract OCR, şunları yapabilen bir motordur: bir dilin karakterlerini tanımak. Pytesseract kütüphanesini kullanmadan önce bilgisayarınıza kurmalısınız. Böyle yaparak:
- Herhangi bir Chrome tabanlı tarayıcıyı açın
- İndir Tesseract OCR kurmak
- Kurulumu çalıştırın ve diğer herhangi bir program gibi kurun
Ortamı hazırlayıp tesseract OCR'yi kurduktan sonra programı kodlamaya hazırsınız.
1. Kitaplıkları İçe Aktarma
Ortama kurduğunuz kitaplıkları içe aktararak başlayın. Kitaplıkları içe aktarmak, projedeki işlevlerini çağırmanıza ve kullanmanıza olanak tanır.
içe aktarmak CV2
içe aktarmak imutils
içe aktarmak pytesseract
içe aktarmanız gerekir OpenCV-Python kütüphane olarak CV2. Diğer kitaplıkları yüklemek için kullandığınız adlarla içe aktarın.
2. Girdiyi Alma
Ardından pytesseract'ı Tesseract motorunun kurulu olduğu yere yönlendirin. kullanarak araba görüntüsünü girdi olarak alın. cv2.imread işlev. Görüntü adını, kullandığınız görüntünün adıyla değiştirin. İşleri kolaylaştırmak için görüntüyü projenizle aynı klasörde saklayın.
pytesseract.pytesseract.tesseract_cmd = 'C:\\Program Dosyaları\\Tesseract-OCR\\tesseract.exe'
orijinal_image = cv2.imread("resim3.jpeg")
Aşağıdaki giriş resmini kullanmak istediğiniz resimle değiştirebilirsiniz.
3. Girdiyi Ön İşleme
Görüntü genişliğini 500 piksel olarak yeniden boyutlandırın. Ardından görüntüyü gri tonlamaya dönüştürün. canny kenar algılama işlevi yalnızca gri tonlamalı görüntülerle çalışır. Son olarak, iki taraflı Filtre Görüntüdeki gürültüyü azaltmak için işlev.
orijinal_görüntü = imutils.resize (orijinal_görüntü, genişlik=500 )
gray_image = cv2.cvtColor (original_image, cv2.COLOR_BGR2GRAY)
gray_image = cv2.bilateralFilter (gray_image, 11, 17, 17)
4. Girişte Plaka Tespiti
Plaka Tespiti Araç üzerinde plaka karakterlerini taşıyan parçanın tespit edilmesi işlemidir.
Kenar Tespiti Gerçekleştirme
arayarak başlayın cv2.Canny önceden işlenmiş görüntüdeki kenarları otomatik olarak algılayacak işlev.
edged_image = cv2.Canny (gray_image, 30, 200)
Konturları bu kenarlardan bulacağız.
Konturları Bulmak
Ara cv2.findContours işlevini kullanın ve bir kopyasını iletin kenarlı görüntü. Bu işlev konturları algılar. kullanarak orijinal görüntü üzerinde algılanan konturların çevresini çizin. cv2.drawKonturlar işlev. Son olarak, tüm görünür konturları çizilmiş olarak orijinal görüntüyü çıkarın.
kontür, yeni = cv2.findContours (edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
img1 = orijinal_resim.kopya()
CV2.drawKonturlar(img1, kontür, -1, (0, 255, 0), 3)
cv2.imshow("img1", resim1)
Program, araba görüntüsü üzerinde bulduğu tüm konturları belirgin bir şekilde çizer.
Konturları bulduktan sonra, en iyi adayları belirlemek için bunları sıralamanız gerekir.
Konturları Sıralama
Konturları minimum alan 30'a göre sıralayın. Aşağıdakileri, plaka konturu olma olasılığı daha düşük olduğundan dikkate almayın. Orijinal görüntünün bir kopyasını oluşturun ve ilk 30 görüntüdeki konturlar. Son olarak, resmi görüntüleyin.
konturlar = sıralanmış (konturlar, anahtar = cv2.contourArea, ters = Doğru)[:30]
# plaka konturunu saklar
ekranCnt = Hiçbiri
img2 = orijinal_resim.kopya()
# ilk 30 konturu çizer
CV2.drawKonturlar(img2, kontür, -1, (0, 255, 0), 3)
cv2.imshow("img2", resim2)
Artık başlangıçta olduğundan daha az kontur var. Çizilen tek konturlar, plakayı içerecek şekilde yaklaşık olarak çizilenlerdir.
Son olarak, sıralanmış konturların üzerinden geçmeniz ve hangisinin plaka olduğunu belirlemeniz gerekir.
İlk 30 Kontur Üzerinde Döngü
Konturlar üzerinde döngü yapmak için bir for döngüsü oluşturun. Dört köşeli konturu bulun ve çevresini ve koordinatlarını belirleyin. Plakayı içeren kontur görüntüsünü saklayın. Son olarak, orijinal görüntünün üzerine plaka konturunu çizin ve görüntüleyin.
sayı = 0
idx = 7konturlarda c için:
# plaka konturunu yaklaştırın
kontur_çevre = cv2.arcLength (c, Doğru)
yaklaşık = cv2.approxPolyDP(c, 0.018 * kontur_çevre, Doğru)# 4 köşeli konturları arayın
eğerlen(yaklaşık)== 4:
ekran Cnt = yaklaşık# plaka konturunun koordinatlarını bulun
x, y, w, h = cv2.boundingRect (c)
new_img = orijinal_resim [ y: y + h, x: x + w]# yeni görüntüyü saklar
cv2.imwrite('./'+str (idx)+".png",yeni_img)
idx += 1
kırmak
# orijinal görüntünün üzerine plaka konturunu çizer
CV2.drawKonturlar(gerçek görüntü, [ekranCnt], -1, (0, 255, 0), 3)
cv2.imshow("tespit edilen araç plakası", gerçek görüntü )
Döngüden sonra, programınız plakayı içeren konturu tanımlamıştır. Sadece plaka konturunu çizer.
5. Algılanan Plakayı Tanıma
Plakayı tanımak, plakanın kırpılmış görüntüsündeki karakterleri okumak anlamına gelir. Daha önce kaydettiğiniz plaka görüntüsünü yükleyin ve görüntüleyin. Ardından, pytesseract.image_to_string işlevini kullanın ve kırpılmış plaka görüntüsünü geçirin. Bu işlev, görüntüdeki karakterleri bir diziye dönüştürür.
# kırpılan plaka resminin dosya adı
kırpılmış_License_Plate = './7.png'
CV2.imshow("kırpılmışlisansplaka", CV2.imread(cropped_License_Plate))
# plaka karakterlerini dizeye dönüştürür
metin = pytesseract.image_to_string (cropped_License_Plate, lang='eng')
Kırpılmış araç plakası aşağıda gösterilmiştir. Üzerindeki karakterler daha sonra ekrana yazdıracağınız çıktı olacaktır.
Plakayı tespit ettikten ve tanıdıktan sonra, çıktıyı görüntülemeye hazırsınız.
6. Çıktıyı Görüntüleme
Bu son adım. Ayıklanan metni ekrana yazdırırsınız. Bu metin, araç plakasının karakterlerini içerir.
Yazdır("Plakası:", metin)
CV2.waitKey(0)
CV2.destroyAllWindows()
Programın beklenen çıktısı aşağıdaki görüntüye benzer olmalıdır:
Plaka metni terminalde görülebilir.
Python Becerilerinizi Keskinleştirin
Python'da araba plakalarını tespit etmek ve tanımak, üzerinde çalışılması gereken ilginç bir projedir. Zorlayıcıdır, bu yüzden Python hakkında daha fazla şey öğrenmenize yardımcı olacaktır.
Programlama söz konusu olduğunda, pratik bir dilin ustalığının özüdür. Becerilerinizi uygulamak için ilginç projeler üzerinde çalışmanız gerekir.