Fondasi Menuju Computer Vision
Sejauh ini, kita menulis kode dari atas ke bawah. Tapi bayangkan di dunia nyata, sebuah program Computer Vision harus memantau 5 kamera sekaligus. Jika kita menggunakan cara biasa, kode kita akan berantakan!
Object-Oriented Programming (OOP) mengubah cara pikir kita. Alih-alih menulis urutan perintah, kita membuat Objek virtual.
Di Computer Vision, semuanya adalah Objek. Kamera adalah objek, gambar wajah adalah objek, filter warna adalah objek. Masing-masing objek punya sifat dan fungsinya sendiri.
Ada dua konsep utama yang harus ditanamkan kuat-kuat di kepalamu:
Class (Kelas): Ini adalah Cetak Biru (Blueprint). Class belum berwujud benda, ia hanya desain. Contoh: Desain blueprint membuat robot kamera.Object (Objek): Ini adalah Benda Nyata hasil cetakan dari Class. Contoh: Kamera 1, Kamera 2, Kamera Depan. Semua dicetak dari desain (Class) yang sama!Setiap cetakan (Class) memiliki dua hal penting:
class Kamera:
# __init__ adalah fungsi spesial untuk memberi nilai awal (Atribut)
def __init__(self, merek):
self.merek = merek
# Ini adalah Method (Kemampuan)
def ambil_foto(self):
print("Cekrek! Foto diambil oleh kamera", self.merek)
Penting: Kata kunci self wajib ditulis pertama kali di dalam fungsi Class. self berarti objek itu sedang menunjuk kepada dirinya sendiri.
Misi: Lengkapi kode Blueprint `KameraScanner` di bawah ini. Pastikan atribut resolusi tersimpan, dan buat kemampuan (method) mendeteksi wajah.
class KameraScanner:
# 1. Lengkapi parameter wajib pertama pada fungsi __init__
def __init__(____, resolusi):
# Simpan data resolusi ke dalam atribut objek
____.resolusi = resolusi
self.status = "Mati"
# 2. Buat method untuk mendeteksi sesuatu
def deteksi_wajah(____):
if self.status == "Aktif":
print("Wajah terdeteksi di resolusi", self.resolusi)
else:
print("Kamera belum dinyalakan!")
Misi: Blueprint sudah siap. Sekarang kita akan "mencetak" benda nyatanya dan menjalankan kemampuannya!
# 1. Mencetak objek nyata dari Class KameraScanner
# (Berikan resolusi "1080p" ke dalam kurung)
kamera_depan = ____("1080p")
# 2. Ubah atribut 'status' milik kamera_depan menjadi "Aktif"
____.status = "Aktif"
# 3. Panggil method 'deteksi_wajah' dari kamera_depan
____.____()
Satukan semuanya! Dengan OOP, kita bisa membuat puluhan kamera tanpa perlu mengulang-ulang menulis fungsi. Inilah kekuatan sejati Python!
class KameraScanner:
def __init__(self, nama, resolusi):
self.nama = nama
self.resolusi = resolusi
self.status = "Mati"
def nyalakan(self):
self.status = "Aktif"
print(self.nama, "telah dinyalakan.")
def deteksi_wajah(self):
if self.status == "Aktif":
print("[" + self.nama + "] Wajah terdeteksi! (Res:", self.resolusi + ")")
else:
print("[" + self.nama + "] Error: Kamera mati.")
# Mencetak DUA objek sekaligus dari satu Blueprint yang sama!
cam_utama = KameraScanner("Cam 1", "4K")
cam_cctv = KameraScanner("CCTV Parkiran", "720p")
cam_utama.nyalakan()
cam_utama.deteksi_wajah()
cam_cctv.deteksi_wajah() # Ini akan error karena belum dinyalakan!