Deteksi objek pada gambar dengan OpenCV-Python

by

helmy

1. Latar Belakang

OpenCV adalah Library Open Source yang sangat besar untuk visi komputer, pembelajaran mesin, dan pemrosesan gambar dan sekarang ini memainkan peran utama dalam operasi waktu nyata yang sangat penting dalam sistem saat ini. Dengan menggunakannya, seseorang dapat memproses gambar dan video untuk mengidentifikasi objek, wajah, sidik jari atau bahkan tulisan tangan manusia. Praktikum kali ini berfokus pada mendeteksi objek rambu jalan

Deteksi Objek adalah teknologi komputer yang terkait dengan visi komputer, pemrosesan gambar, dan pembelajaran mendalam yang berhubungan dengan mendeteksi contoh objek dalam gambar dan video. Kami akan melakukan deteksi objek dalam praktikum ini menggunakan sesuatu yang dikenal sebagai haar cascades .

Pengklasifikasi Haar Cascade adalah cara yang efektif untuk mendeteksi objek. Metode ini diusulkan oleh Paul Viola dan Michael Jones dalam makalah mereka, Deteksi Objek Cepat menggunakan Kaskade Peningkatan Fitur Sederhana . Haar Cascade adalah pendekatan berbasis pembelajaran mesin di mana banyak gambar positif dan negatif digunakan untuk melatih pengklasifikasi.

Gambar positif, Gambar ini berisi gambar yang ingin kita identifikasi oleh pengklasifikasi kita.

Gambar Negatif – Gambar segala sesuatu yang lain, yang tidak berisi objek yang ingin kita deteksi.

Dalam praktikum kali ini kami akan mencoba iplementasi sistem pencarian citra berdasarkan contoh citra (Content Based Image Retrieval – CBIR) dengan data set rambu-rambu jalan memakai tema rambu jalan tanda berhenti/Stop

Lambang Stop dengan latar merah berarti pengguna jalan dilarang untuk terus berjalan di suatu lajur. Pengguna jalan diharuskan untuk berhenti baik sementara maupun ketika kondisi sudah dipastikan aman dan selamat dari adanya konflik lalu lintas.

2. Tujuan

a. Mencoba mendeteksi objek rambu-rambu lalu lintas tanda berhenti dengan OpenCV-Python

b. Memenuhi Tugas 1 (Implementasi Tutorial) Implementasikan sistem pencarian citra berdasarkan contoh citra (Content Based Image Retrieval – CBIR)

3. Rancangan

a. Menginstall Aplikasi Python Kemudian menginstall package opencv dan matplotlib melalui terminal dalam keadaan terhubung ke internet dengan mengetikkan perintah berikut;

pip instal opencv-python

pip instal matplotlib

Anda mungkin juga perlu mendownload dan menginstall Microsoft Redistribution agar package matplotlib dapat dijalankan melalui python melalui tautan link berikut;

https://support.microsoft.com/id-id/help/2977003/the-latest-supported-visual-c-downloads

b. Download file haar cascade dan gambar yang digunakan dalam tutorial, contoh kita gunakan saja haar cascade rambu jalan atau road sign cascades jenis stop/tanda dilarang berhenti kemudian letakkan didalam folder 

Deteksi objek pada gambar

c. Siapkan pula gambar untuk rambu lalu lintas tanda STOP atau harus berhenti, bisa download di internet kemudian letakkan didalam satu folder yang sama. Letakkan file XML dan gambar JPG di folder yang sama dengan skrip Python Anda.
https://github.com/cfizette/road-sign-cascades
d. Contoh gambar yang akan saya pakai dalam praktikum ini (download digoogle)
Deteksi objek pada gambar dengan OpenCV-Python

4. Source Code Implementasi

a. Buka aplikasi python kemudian buat project baru melalui menu file > new files
b. Penjelasan kode
#Import header 
import cv2 
from matplotlib import pyplot as plt
# Gambar pembuka
img = cv2.imread (“image.jpg”)
# OpenCV membuka gambar sebagai BRG
# Tetapi kami menginginkannya sebagai RGB dan kita juga membutuhkan grayscale
img_gray = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)
img_rgb = cv2.cvtColor (img, cv2.COLOR_BGR2RGB)
# Menciptakan tempat atau window untuk gambar dan menunjukkannya
plt.subplot (1, 1, 1)
plt.imshow (img_rgb)
plt.show ()
# Kami akan menggunakan detectMultiScale()fungsi OpenCV untuk mengenali tanda-tanda besar maupun kecil:
# Menggunakan minSize karena tidak mengganggu dengan gambar ekstra kecil pada titik yang terlihat seperti tanda BERHENTI
found = stop_data.detectMultiScale (img_gray,
                                   minSize = (20, 20))
# Jangan lakukan apapun jika ada tidak ada tanda
amount_found = len (found)
# Jika jumlah_ditemukan! = 0: atau Mungkin ada lebih dari satu segera tambahkan kotak ke dalam gambar untuk (x, y, lebar, tinggi) ditemukan:
# Kami menandainya dengan gambar persegi panjang warna hijau di sekitar setiap tanda yang dikenali
        cv2.rectangle (img_rgb, (x, y),
                      (x + tinggi, y + lebar),
                      (0, 255, 0), 5)
5. Source Code Lengkap
import cv2 
from matplotlib import pyplot as plt 
 
img = cv2.imread(“D:/CBIR-Project/rambu1.jpg”) 
  
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
  
stop_data = cv2.CascadeClassifier(‘D:/CBIR-Project/stop_data.xml’) 
  
found = stop_data.detectMultiScale(img_gray,minSize =(30, 30)) 
  
amount_found = len(found) 
  
if amount_found != 0: 
      
    for (x, y, width, height) in found: 
          
        cv2.rectangle(img_rgb, (x, y),  
                      (x + height, y + width),  
                      (0, 255, 0), 5) 
          
plt.subplot(1, 1, 1) 
plt.imshow(img_rgb) 
plt.show()

6. Hasil Program

Deteksi objek

dengan OpenCV-Python

7. Kesimpulan

Dalam percobaan kali ini kita sudah berhasil mengkotaki rambu lalu lintas dengan tanda stop berdasarkan dataset Haar Cascade yang kita berinama stop_data.xml untuk mengenali tanda stop pada kumpulan gambar rambu lalu lintas diatas. Apabila objek gambar yang dicari ditemukan maka program langsung memberi tanda kotak/persegi panjang pada objek yang dimaksudkan memakai fungsi x sebagai height dan y sebagai tinggi
Download CBIR Project Disini
www,helmykediri com

Related Post