🤖
ROBOT KODLA
Öğrenmeye Başla →
🧠 Yapay Zeka Orta

Bilgisayarla Görü ve OpenCV ile Görüntü İşlemeye Giriş

Bilgisayarlar resimleri nasıl görür? OpenCV nedir, gri tonlama, kenar algılama ve canlı web kamerasından Python ile yüz tanıma projesi kodları.

İ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:

  • Piksel (Pixel): Dijital bir görüntünün en küçük yapı taşıdır.
  • Gri Tonlamalı (Grayscale) Resimler: Her piksel 0 (Tam Siyah) ile 255 (Tam Beyaz) arasında tek bir sayı ile temsil edilir.
  • Renkli (RGB / BGR) Resimler: Her piksel 3 farklı katmandan (Kanal / Channel) oluşur: Kırmızı (Red), Yeşil (Green) ve Mavi (Blue).
  • Örneğin $1920 imes 1080$ çözünürlüğündeki Full HD bir fotoğraf, bilgisayarın belleğinde $1080$ satır, $1920$ sütun ve $3$ renk derinliğinde, yani toplamda 6.220.800 adet sayısal hücreden oluşan dev bir 3 boyutlu tensördü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:

  • Platform Bağımsızdır: Windows, Linux, Android ve Raspberry Pi üzerinde sorunsuz çalışır.
  • Hafif ve Hızlıdır: C/C++ çekirdeği sayesinde saniyede 60 kare (FPS) canlı video akışlarını anlık işleyebilir.
  • Zengin Algoritma Desteği: Kenar algılama, nesne takibi, yüz tanıma, optik karakter tanıma (OCR) ve derin öğrenme modellerini çalıştırma (DNN modülü) yeteneklerine sahiptir.
  • 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:

  • 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.
  • Bulanıklaştırma (Gaussian Blur): Kamera sensöründen gelen karlanmayı ve elektriksel parazitleri yumuşatır.
  • 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.
  • 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ı

  • Top Takip Eden Robot: Kameradaki kırmızı renk maskelemesi ile topun merkez koordinatı ($X, Y$) bulunur; robot top merkeze gelene kadar tekerleklerini döndürür.
  • Otonom Şerit Takibi: Yoldaki beyaz ve sarı şeritlerin eğimi Canny algoritmasıyla hesaplanarak aracın direksiyon açısı ayarlanır.
  • Fabrika Kalite Kontrol: Üretim bandından geçen şişelerin kapaklarının takılı olup olmadığı saniyenin yüzde birinde denetlenir.
  • 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.

    💡

    Bilgisayarla Görü ve OpenCV ile Görüntü İşlemeye Giriş Hakkında Sıkça Sorulan Sorular

    Bu robotik projeyle ilgili en çok merak edilen noktalar ve uzman yanıtları

    Bilgisayarla Görü ve OpenCV ile Görüntü İşlemeye Giriş projesini yapmak ne kadar sürer ve kimler için uygundur?▼
    Bu proje ortalama 30-45 dakika sürmektedir. Adım adım montaj rehberi ve test kodları sayesinde okul bilim fuarları, TÜBİTAK sergileri veya evde maker projeleri geliştirmek isteyen tüm meraklılar için uygundur.
    Python kodlarında IndentationError (girinti hatası) nasıl önlenir?▼
    Python'da bloklar süslü parantez yerine girintilerle belirlenir. if, for ve def satırlarından sonra gelen alt satırların 4 boşluk (veya 1 tab) içeride olduğundan ve boşluk ile tab karakterlerinin karıştırılmadığından emin olunmalıdır.
    Bilgisayarla Görü ve OpenCV ile Görüntü İşlemeye Giriş çalışmasını tamamladıktan sonra nasıl daha ileri bir seviyeye taşıyabilirim?▼
    Bu çalışmaya ek sensörler (kablosuz Bluetooth/Wi-Fi modülü, OLED ekran veya sesli buzzer uyarısı) entegre edebilir; verileri internet ortamına aktararak Nesnelerin İnterneti (IoT) tabanlı akıllı bir sisteme dönüştürebilirsiniz.