OpenCV'de Resim ve Video İşlemleri
OpenCV ile Video ve Resimlerin Okunması
Bu ders, OpenCV kullanarak video ve resim dosyalarının nasıl okunacağını ve işleneceğini kapsar. Bu temel, bilgisayar görüşü projelerinde sıklıkla gereklidir ve görüntü işleme becerilerinizin temelini oluşturur.
Bu bölümde anlatılan yöntemler, OpenCV kütüphanesini kullanarak görsel verilerle çalışmanın temelini oluşturur.
Resimlerin Okunması
Resimleri okumak için OpenCV'nin imread
fonksiyonunu kullanırız. Bu fonksiyon, resim dosyasının yolunu argüman olarak alır ve bir görüntü matrisi döndürür.
import cv2
# Resim dosyasını oku
image = cv2.imread('yol/dosya_adı.jpg')
# Resmi ekranda göster
cv2.imshow('Resim', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(0)
komutu, herhangi bir tuşa basılana kadar pencerenin açık kalmasını sağlar. cv2.destroyAllWindows()
ise tüm OpenCV pencerelerini kapatır.
Videoların Okunması
Videoları okumak için cv2.VideoCapture
fonksiyonunu kullanırız. Bu, video dosyasından veya bir kamera aygıtından çerçeve çerçeve okuma imkanı tanır.
# Video dosyasını okumak için
cap = cv2.VideoCapture('yol/video_dosyası.mp4')
# Kamera kullanarak video okumak için (genellikle 0 varsayılan kamera)
# cap = cv2.VideoCapture(0)
# Videoyu çerçeve çerçeve oku
while True:
ret, frame = cap.read()
# Eğer çerçeve okunursa, göster
if ret:
cv2.imshow('Video', frame)
# 'q' tuşuna basılırsa döngüyü kır
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# Her şey bittiğinde serbest bırak ve pencereleri kapat
cap.release()
cv2.destroyAllWindows()
Kamera ile video okurken, cv2.VideoCapture
fonksiyonuna geçirilen argüman kamera aygıtının indeksidir. Çoğu sistemde varsayılan kamera 0
olarak indekslenir.
Bu dersin sonunda, OpenCV ile basit görüntü ve video işleme tekniklerini öğrenmiş olacaksınız. Bu yetenekler, daha ileri görüntü işleme görevlerinin temelini oluşturacaktır.
Frame'lerin Yeniden Şekillenmesi ve Boyutlandırılması
Bu ders, OpenCV kullanarak görüntü ve video çerçevelerinin nasıl yeniden boyutlandırılacağını ve şekillendirileceğini kapsar. Bu işlemler, görüntü işleme algoritmalarının daha verimli çalışması için çoğu zaman gereklidir.
Çerçevelerin Boyutlandırılması
Çerçeveleri boyutlandırmak için OpenCV'nin resize
fonksiyonunu kullanırız. Bu fonksiyon, orijinal çerçeve, hedef boyutlar ve isteğe bağlı olarak yeniden boyutlandırma algoritması olmak üzere birkaç parametre alır.
import cv2
# Orijinal görüntüyü yükle
image = cv2.imread('path/to/image.jpg')
# Görüntüyü yeni bir boyuta yeniden boyutlandır
resized_image = cv2.resize(image, (800, 600))
# Yeniden boyutlandırılmış görüntüyü göster
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Görüntüleri yeniden boyutlandırırken oranları korumak istiyorsanız, orijinal boyutları orantılı bir şekilde hesaplayabilir ve bu yeni boyutları resize
fonksiyonuna iletebilirsiniz.
Çerçevelerin Yeniden Şekillendirilmesi
Bazen, bir görüntüyü veya video çerçevesini yeniden şekillendirmek (rescaling) ihtiyacı duyabilirsiniz. Bu, özellikle belirli bir çözünürlük oranını korumak istediğinizde önemlidir.
Görüntü boyutlarını orantılı bir şekilde değiştirmek için bir işlev yazabilirsiniz:
def rescale_frame(frame, scale=0.75): # Varsayılan olarak %75'e boyutlandır
width = int(frame.shape[1] * scale)
height = int(frame.shape[0] * scale)
dimensions = (width, height)
return cv2.resize(frame, dimensions)
Bu fonksiyon, belirtilen ölçek faktörüne göre bir görüntünün boyutunu ayarlar. Görüntüyü yeniden boyutlandırmak için aşağıdaki gibi kullanabilirsiniz:
# Orijinal görüntüyü yükle
frame = cv2.imread('path/to/image.jpg')
# Görüntüyü yeniden boyutlandır
rescaled_frame = rescale_frame(frame, scale=0.5)
# Yeniden boyutlandırılmış görüntüyü göster
cv2.imshow('Rescaled Frame', rescaled_frame)
cv2.waitKey(0)
cv2.destroyAllWindows()
Yeniden boyutlandırma ve şekillendirme işlemleri görüntü kalitesini etkileyebilir. Bu işlemleri yaparken görsel kalitenin nasıl etkilenebileceğini göz önünde bulundurun.
Bu işlevler, özellikle büyük görüntü kümeleriyle çalışırken veya belirli bir çıkış boyutu gereksinimi olduğunda kullanışlıdır. Görüntü boyutlandırma, bilgisayar görüşü uygulamalarında sıklıkla ihtiyaç duyulan bir adımdır.
Resimler Üzerinde Şekil ve Yazı İşlemleri
Bu ders, OpenCV kullanarak görüntülere çeşitli şekiller çizme ve metin ekleme işlemlerini kapsar. Bu işlemler, görüntü üzerinde görsel notlar eklemek veya belirli alanları vurgulamak için sıkça kullanılır.
Şekillerin Çizilmesi
OpenCV, çeşitli geometrik şekilleri çizmenize olanak tanır. Bu şekiller arasında çizgiler, dikdörtgenler, daireler ve çokgenler bulunur.
Çizgiler
Bir çizgi çizmek için line
fonksiyonunu kullanırız:
import cv2
# Boş bir görüntü oluştur
image = cv2.imread('path/to/image.jpg')
# Çizgi çiz (başlangıç, bitiş, renk, kalınlık)
cv2.line(image, (0, 0), (150, 150), (255, 0, 0), 5)
# Sonucu göster
cv2.imshow('Line', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Dikdörtgenler
Bir dikdörtgen çizmek için rectangle
fonksiyonunu kullanırız:
# Dikdörtgen çiz (sol üst, sağ alt, renk, kalınlık)
cv2.rectangle(image, (10, 10), (100, 100), (0, 255, 0), 3)
Daireler
Bir daire çizmek için circle
fonksiyonunu kullanırız:
# Daire çiz (merkez, yarıçap, renk, kalınlık)
cv2.circle(image, (100, 100), 55, (0, 0, 255), -1)
Kalınlık parametresine -1
değeri verildiğinde, çizilen şekil içi dolu olarak çizilir.
Metin Ekleme
Görüntülere metin eklemek, kullanıcıya bilgi vermek veya görüntüdeki belirli bir nesneyi etiketlemek için yararlıdır. Metin eklemek için putText
fonksiyonunu kullanırız:
# Metin ekle (metin, konum, font, ölçek, renk, kalınlık)
cv2.putText(image, 'OpenCV', (10, 500), cv2.FONT_HERSHEY_SIMPLEX, 4, (255, 255, 255), 2)
Metin ve şekiller, görüntünün üzerine kalıcı olarak çizilir. Orjinal görüntüyü korumak istiyorsanız, işlemlerden önce bir kopyasını almayı unutmayın.
Bu teknikler, görüntülerin üzerine anlamlı bilgiler eklemenize ve görüntü işleme sırasında dikkatinizi çekmek istediğiniz alanları vurgulamanıza olanak tanır.