İ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:
1. **Gri Tona Çevirme (`cv2.cvtColor`):** Renk bilgisi gereksiz veri yükü yaratır; resmi siyah-beyaza çevirmek işlem yükünü 3 kat azaltır.
2. **Bulanıklaştırma (Gaussian Blur):** Kamera sensöründen gelen karlanmayı ve elektriksel parazitleri yumuşatır.
3. **Kenar Algılama (Canny Edge Detection):** Piksel parlaklığının aniden değiştiği sınırları bularak cisimlerin dış hatlarını (çizgilerini) ortaya çıkarır.
4. **Renk Maskeleme (HSV Eşikleme):** Örneğin çizgi izleyen bir robotta sadece sarı şeritleri veya kırmızı topu takip etmek için belirli renk tonları filtrelenir.
---
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.