Giriş
Python, bilgisayar görüsü alanında sunduğu kapsamlı kütüphanelerle yazılımcıların vazgeçilmezi haline gelmiştir. Bu kütüphanelerden en popüleri olan OpenCV, görüntü işleme ve bilgisayarla görme uygulamaları geliştirmek için kullanılan güçlü bir araçtır. Bu yazıda, farklı seviyelerdeki geliştiricilerin ilgisini çekebilecek 10 farklı OpenCV Python projesini keşfedeceğiz. Amacımız, projeleri sizin için daha erişilebilir hale getirmek ve bilgisayar görüsü becerilerinizi geliştirmektir.
1. Görüntü Ekleme ve Görselleştirme
İlk projemiz, basit bir görüntü ekleme uygulamasıdır. Bu uygulama, kullanıcıların bilgisayarlarından bir görüntü seçip bunu bir pencerede görüntülemelerine olanak tanır. OpenCV kullanarak, kullanıcıdan görüntü dosyasını alabilir ve ardından bu görüntüyü ekranda gösterebiliriz.
İlk olarak, OpenCV ve NumPy kütüphanelerini projeye eklememiz gerekiyor. Aşağıdaki kod parçası, gerekli kütüphanelerin yüklenmesini ve görüntünün ekranda nasıl gösterileceğini açıklar:
import cv2
import numpy as np
# Görüntü dosyasını oku
img = cv2.imread('görüntü.jpg')
# Görüntüyü göster
cv2.imshow('Görüntü', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
Böylece, kullanıcı seçtiği görüntüyü OpenCV penceresinde görüntüleyebilir.
2. Video Akışı ile Canlı Gösterim
İkinci projemizde, webcam’den canlı video akışı alacağız. Bu proje, görüntü işleme tekniklerini gerçek zamanlı uygulamak için harika bir başlangıç noktasıdır. OpenCV ile webcam akışına erişim oldukça kolaydır. Aşağıdaki kod, webcam canlı akışını gösterir:
# Webcam'den video akışı aç
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('Canlı Video', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Bu proje ile webcam’den gelen görüntü üzerinde işlemler yapma fırsatına sahip olacaksınız. Örneğin, görüntüyü gri tonlamaya dönüştürebilir veya yüz algılama uygulamaları gerçekleştirebilirsiniz.
3. Yüz Algılama
Yüz algılama, OpenCV’nin en popüler özelliklerinden biridir. Bu projede, insan yüzlerini tespit etmek için Haar Cascade sınıflayıcılarını kullanacağız. Öncelikle Haar Cascade dosyasını indirip projeye eklemeliyiz:
# Yüz algılama için cascade dosyasını yükle
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
Daha sonra, video akışı üzerinde yüzleri tespit edelim:
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
cv2.imshow('Yüz Algılama', frame)
Bu proje, yüz algılamanın temellerini anlamanızı sağlar ve daha fazla bilgisayarla görme projelerinde sizi yönlendirir.
4. Görüntü Üzerinde Kenar Algılama
Bütün fotoğraflarda kenar algılama, nesneleri vurgulamak ve özellikleri çıkarmak için kullanılan bir tekniktir. OpenCV, kenarları tespit etmek için Canny algoritmasını sunmaktadır. Aşağıda, bir görüntüde kenar algılama yapmanın basit bir örneği verilmiştir:
img = cv2.imread('görüntü.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Kenarları algıla
edges = cv2.Canny(gray, 100, 200)
cv2.imshow('Kenar Algılama', edges)
Bu basit proje size kenar algılama konusunda bir temel sağlar. Algoritmanın parametrelerini değiştirerek sonucunu gözlemleyebilirsiniz.
5. Filtreleme ve Görüntü İşleme
Görüntü filtreleme, görüntü üzerinde çeşitli efektler oluşturmanın temel bir yöntemidir. OpenCV, birçok yerleşik filtre ile bunu kolaylaştırır. Örneğin, bir görüntüyü bulanıklaştırmak için Gaussian filtre kullanabiliriz:
blurred = cv2.GaussianBlur(img, (15, 15), 0)
cv2.imshow('Bulanıklaştırılmış Görüntü', blurred)
Bu proje, görüntü işleme teknikleriyle daha fazla deney yapma imkanı sunarak, örneğin kenar algılama veya yüz algılama sonuçlarını iyileştirmenize yardımcı olur.
6. Görüntü Sınıflandırma ile Makine Öğrenmesi
OpenCV, makine öğrenmesi alanına girmemizi sağlar. Bu projede, bir görüntü sınıflandırma modeli oluşturarak belirli öğeleri tanımlamayı öğreneceğiz. Örneğin, MNIST veri setinden el yazısı rakamları sınıflandırma projesi geliştirebiliriz. Öncelikle TensorFlow veya Keras gibi kütüphaneleri kullanarak bir model oluşturmalıyız.
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
# Modeli derle ve eğit
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
Bu uygulama, makine öğrenme projelerine başlangıç için güzel bir örnek teşkil etmektedir. Sonuçlarınızı görselleştirerek öğrenme sürecinizi daha eğlenceli hale getirin.
7. Oyun Oynama ve Hareketle Kontrol
Görüntü işleme teknolojisinin eğlenceli bir örneği, hareketle kontrol edilen bir oyun geliştirmektir. OpenCV kullanarak, kullanıcıların herhangi bir nesneyi veya el hareketlerini kullanarak bir oyunu oynamasını sağlayabiliriz. Örneğin, kullanıcı elini kaldırdığında belirli bir hareket yapacak bir karakter oluşturabiliriz.
Aşağıda, basit bir örnek verilmiştir:
while True:
ret, frame = cap.read()
# El algılaması ve oyundaki karakteri kontrol et
if detected_hand_movement:
# Karakter hareket ettir
move_character()
Bu projeler, hem eğlenceli olabilir hem de Python becerilerinizi geliştirebilir.
8. Görüntü Dönüşümü ve Geometrik Değişiklikler
Görüntü üzerinde dönüşüm uygulamak, bilgisayar görüsü projelerinin temel bir parçasıdır. Açıklık, döndürme, ölçeklendirme ve perspektif dönüşümleri gibi çeşitli geometrik değişiklikler yapabiliriz. Aşağıdaki kod parçası, bir görüntünün döndürülmesi ve ölçeklenmesi için kullanılabilir:
rows, cols, _ = img.shape
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
rotated = cv2.warpAffine(img, M, (cols, rows))
cv2.imshow('Döndürülmüş Görüntü', rotated)
Bu ve benzeri projeler, görüntüleri manipüle ederek daha yaratıcı görseller elde etmenizi sağlar.
9. Makine Öğrenmesi ile Yüz Tanıma
Yüz tanıma uygulamaları, günümüzde yaygın olarak kullanılan bilgisayar görüsü tekniklerindendir. OpenCV kullanarak makine öğrenmesi yöntemlerini uygulamak, kullanıcıların yüzleri tespit etmesine ve tanımasına olanak sunar. Projenin temel adımlarında yüz algılama ve ardından bir makine öğrenme modeli ile karşılaştırmalar yapılacaktır.
Burada temel olarak, yüz algılama operasyonunu daha önceden yazdığımız kodlardan alabiliriz. Ardından, eğitim verisi ile model oluşturma adımına geçeriz:
model = train_model_using_face_data(face_data)
Sonuçta, belirli yüzlerin tanımlanmasını sağlayarak çok daha karmaşık projelerde ilerlemek mümkün olacaktır.
10. Kişisel Güvenlik Uygulaması (Evdaki İhlalleri Algılamak)
Son projemiz, evde güvenlik uygulaması geliştirme konusunu ele almak. Bu proje ile, kullanıcılar evdeki hareketleri takip edebilir ve güvenliğini sağlamak adına bildirim alabilir. OpenCV ile gelişmiş algılayıcılar entegre ederek, görüntü üzerinde hareket tespit mekanizması kurabiliriz:
first_frame = None
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (21, 21), 0)
if first_frame is None:
first_frame = blur
continue
delta_frame = cv2.absdiff(first_frame, blur)
threshold_frame = cv2.threshold(delta_frame, 30, 255, cv2.THRESH_BINARY)[1]
# Hareket algılama işlemlerini yap
Böylece, kullanıcıların evlerdeki güvenliklerinin artmasını sağlayacak bir sistem geliştirmiş olursunuz.
Sonuç
Bu yazıda, farklı düzeylerdeki geliştiriciler için OpenCV ile gerçekleştirilebilecek 10 farklı projeyi ele aldık. Her proje, bilgisayar görüsü becerilerinizi geliştirme ve yeni teknolojileri deneyimleme fırsatı sunar. Python ve OpenCV ile yaratıcı olmanın sınırlarını zorlayın!