Deteksi Plat Nomor Kendaraan dengan OpenCv dan Python menggunakan pendekatan Bilateral Filter dan Edges Detection
Pelat nomor adalah salah satu jenis identifikasi kendaraan bermotor. Pelat nomor juga disebut pelat registrasi kendaraan, atau di Amerika Serikat dikenal sebagai pelat izin (license plate). Bentuknya berupa potongan pelat logam atau plastik yang dipasang pada kendaraan bermotor sebagai identifikasi resmi. Biasanya pelat nomor jumlahnya sepasang, untuk dipasang di depan dan belakang kendaraan. Namun ada jurisdiksi tertentu atau jenis kendaraan tertentu yang hanya membutuhkan satu pelat nomor, biasanya untuk dipasang di bagian belakang.
Pelat nomor memiliki nomor seri yakni susunan huruf dan angka yang dikhususkan bagi kendaraan tersebut. Nomor ini di Indonesia disebut nomor polisi, dan biasa dipadukan dengan informasi lain mengenai kendaraan bersangkutan, seperti warna, merk, model, tahun pembuatan, nomor identifikasi kendaraan atau VIN dan tentu saja nama dan alamat pemilikinya. Semua data ini juga tertera dalam Surat Tanda Nomor Kendaraan Bermotor atau STNK yang merupakan surat bukti bahwa nomor polisi itu memang ditetapkan bagi kendaraan tersebut.
Sumber: Wikipedia
Berdasarkan penjelasan diatas sobat dapat memahami fungsi dari adanya plat kendaraan bukan? Plat yang dimiliki merupakan plat nomer yang mana fungsi dari nomor tersebut untuk mengidentifikasi informasi dari pemilik kendaraan yang bersangkutan, sehingga plat nomer yang ada sifatnya berbeda beda atau tidak akan ada yang sama. Dalam hal ini plat dapat dimanfaatkan untuk diterapkan dalam berbagai keperluan contoh umumnya plat dapat digunakan sebagai identifikasi kepemilikan kendaraan saat parkir.
Berdasarkan hal tersebut, Dettline akan membuat pembahasan mengenai Deteksi Plat Nomor Kendaraan menggunakan Python dan OpenCV. Berikut penjelasannya
Berdasarkan hal tersebut, Dettline akan membuat pembahasan mengenai Deteksi Plat Nomor Kendaraan menggunakan Python dan OpenCV. Berikut penjelasannya
Tentukan Gambar Yang Akan Digunakan
Pada tahap awal sobat perlu menyediakan sebuah gambar yang mana pada gambar tersebut terdapat plat nomer kendaraan, contoh yang Dettline gunakan adalah gambar berikut:
Gambar bahan untuk tutorial deteksi plat kendaraan |
Import Semua Library Yang Diperlukan
Kode yang diperlukan adalah sebagai berikut
import numpy as np
import cv2
import imutils
import cv2
import imutils
Buat Variabel Foto Lalu Coba Untuk Tampilkan
Dalam membuat variabel untuk foto ini dapat dibuat dengan nama bebas, pada tutorial ini Dettline memberikan nama untuk variabel tersebut dengan nama gambar. Penulisan seperti dibawah ini
gambar = cv2.imread('E:\ERESHA\Semester 2\mobil2.jpg')
cv2.imshow("Gambar Asli", gambar)
gambar adalah nama variabel yang dibuat untuk menampung gambar yang akan dideteksi plat nomernya. Sedangkan kode imread berisi alamat gambar yang akan kita gunakan, cocokan alamat tersebut dengan gambar yang sobat Dettline sudah sediakan.
Kode imshow akan menampilkan isi dari variabel gambar dengan memberi nama judul tampilan Gambar Asli.
Convert Foto Dalam Mode Grayscale
Ini merupakan salah satu syarat untuk mendapatkan objek plat nomor kendaraan, tahap ini yang perlu kalian tulis adalah
gray = cv2.cvtColor(gambar, cv2.COLOR_BGR2GRAY)
cv2.imshow("1 - Gambar Grayscale", gray)
cv2.imshow("1 - Gambar Grayscale", gray)
gray adalah variabel baru yang dibuat untuk menerapkan si gambar dengan efek BGR agar menjadi gambar Grayscale. Lalu tampilkan kembali hasilnya dengan imshow untuk melihat bahwa gambar telah berubah
Gambar di tahap ini saat berhasil menjadi Grayscale |
Mereduksi Noise Pada Gambar Grayscale Yang Telah Dibuat Sebelumnya
Pada tahap ini, gambar Grayscale sebelumnya akan dibersihkan noise-nya untuk hasil yang lebih baik, berikut kodenya
gray = cv2.bilateralFilter(gray, 11, 17, 17)
cv2.imshow("2 - Gambar dengan filter Bilateral", gray)
cv2.imshow("2 - Gambar dengan filter Bilateral", gray)
Settingan yang cocok untuk mengurangi noise pada gambar grayscale adalah 11, 17, 17 menggunakan kode bilateralFilter. Selanjutnya silakan sobat tampilkan dengan imshow kembali
Bila diperhatikan baik baik terdapat perbedaan pada gambar sebelumnya dimana gambar yang sekarang lebih samar noise-nya atau terkesan lebih lembut |
Membuat Foto Menjadi Canny Edges
Sebelum masuk ke tahap akhir, foto harus diubah untuk mendapat efek Canny Edges, dengan begitu plat nomer yang ada pada kendaraan semakin mudah untuk dideteksi, kodenya sebagai berikut
edged = cv2.Canny(gray, 255, 255)
cv2.imshow("4 - Membuat gambar Canny Edges", edged)
Hasilnya akan seperti foto di bawah ini
# Find contours based on Edges
Semoga artikel ini dapat membantu sobat Dettline semuanya, terimaksih.
edged = cv2.Canny(gray, 255, 255)
cv2.imshow("4 - Membuat gambar Canny Edges", edged)
Hasilnya akan seperti foto di bawah ini
Gambar yang telah diberi efek Canny |
Tentunya gambar itu bisa didapat bila sudah menerapkan efek gray
Final Untuk Mendapat Hasil Akhir Plat Nomor Kendaraan
Setelah sobat Dettline berhasil melakukan itu semua, sobat dapat menjalankan kode terakhir untuk mendapatkan hasil akhir yaitu deteksi plat nomor kendaraan, kodenya sebagai berikut
# Find contours based on Edges
(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnts=sorted(cnts, key = cv2.contourArea, reverse = True)[:30] #sort contours based on their area keeping minimum required area as '30' (anything smaller than this will not be considered)
NumberPlateCnt = None #we currently have no Number plate contour
# loop over our contours to find the best possible approximate contour of number plate
count = 0
for c in cnts:
peri = cv2.arcLength(c, True)
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
if len(approx) == 4: # Select the contour with 4 corners
NumberPlateCnt = approx #This is our approx Number Plate Contour
break
# Drawing the selected contour on the original image
cv2.drawContours(gambar, [NumberPlateCnt], -1, (255,255,0), 3)
cv2.imshow("Hasil Akhir! Deteksi Plat Kendaraan", gambar)
cv2.waitKey(0) #Wait for user input before closing the images displayed
Hasil Akhir Akan Seperti Berikut!
Hasil akhir deteksi plat nomer kendaraan |
Semoga artikel ini dapat membantu sobat Dettline semuanya, terimaksih.