İnsanlar çevrelerindeki dünyayı algılarken duyularının neredeyse %80'ini gözleri aracılığıyla kullanır. Bir odadaki sandalyeyi görmek, arkadaşımızın yüzünü kalabalıkta seçmek veya kırmızı ışık yandığında frene basmak bizim için son derece zahmetsiz reflekslerdir. Ancak bir bilgisayar için bir kamera görüntüsü yalnızca milyonlarca sıradan sayıdan (sayısal matrislerden) ibarettir. Peki bir bilgisayara veya robota "göz ve görme yetisi" nasıl kazandırılır? İşte bu alana Bilgisayarla Görü (Computer Vision) ve bu alanın dünyadaki açık ara 1 numaralı kütüphanesine OpenCV (Open Source Computer Vision Library) adı verilir. Bu rehberde, dijital görüntülerin mantığını ve Python OpenCV ile yüz/nesne tanımayı inceliyoruz.
1. Bilgisayarlar Resimleri Nasıl Görür?
Bir bilgisayar ekrandaki sevimli kedi resmine baktığında kediyi değil, piksellerden oluşan dev bir sayı tablosunu görür:
2. OpenCV Kütüphanesi Nedir ve Neden Standarttır?
Intel tarafından 2000 yılında başlatılan OpenCV, C++ ve Python dilleriyle çalışan, donanım ivmelendirmeli ve açık kaynaklı dünyanın en gelişmiş görüntü işleme kütüphanesidir:
3. Temel Görüntü İşleme Adımları
Bir robotun kamera görüntüsünü anlamlandırabilmesi için görüntü genellikle şu filtrelerden geçirilir:
4. Python ve OpenCV ile Canlı Web Kamerasından Yüz Algılama
Aşağıdaki kod, bilgisayarınızın web kamerasını açarak ekran karşısındaki insan yüzlerini gerçek zamanlı olarak yeşil bir dikdörtgen içine alan tam bir Python OpenCV programıdır:
import cv2 # Önceden eğitilmiş Haar Cascade yüz tanıma modelini yükle
yuz_siniflandirici = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') # Web kamerasını başlat (0: Varsayılan kamera)
kamera = cv2.VideoCapture(0) print("Kamera açıldı! Çıkmak için klavyeden 'q' tuşuna basın.") while True: # Kameradan bir kare oku basarili, kare = kamera.read() if not basarili: break # Görüntüyü gri tona çevir (Daha hızlı işlem için) gri = cv2.cvtColor(kare, cv2.COLOR_BGR2GRAY) # Yüzleri algıla (Ölçekleme faktörü ve komşuluk sayısı) yuzler = yuz_siniflandirici.detectMultiScale(gri, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30)) # Algılanan her yüzün etrafına yeşil bir dikdörtgen çiz for (x, y, w, h) in yuzler: cv2.rectangle(kare, (x, y), (x + w, y + h), (0, 255, 0), 2) cv2.putText(kare, "Insan Yuzu", (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2) # Ekranda göster cv2.imshow('RobotKodla - OpenCV Canli Yuz Algilama', kare) # 'q' tuşuna basılırsa döngüden çık if cv2.waitKey(1) & 0xFF == ord('q'): break # Temizlik yap
kamera.release()
cv2.destroyAllWindows()5. Robotik Dünyasındaki Uygulamaları
Sonuç
Bilgisayarla görü, yapay zekaya dünyayı anlama gözü kazandıran en büyüleyici teknoloji alanıdır. OpenCV ile atılan bu ilk adımlar, ileride otonom araçlar ve yapay zeka destekli robotik projeler geliştirmenizin anahtarını sunacaktır.