Python ile Bir Klasördeki Tüm Görselleri Okuma Yöntemleri

Giriş

Python, geniş kütüphane desteği ve sade sözdizimi sayesinde, görüntü işleme projeleri ve veri analizi gibi birçok alanda sıkça tercih edilen bir programlama dilidir. Çoğu durumda, dosyalarla etkileşimde bulunmak, yani dosyaları okumak veya yazmak, temel bir gerekliliktir. Özellikle bir klasördeki tüm görselleri okumak, birçok geliştirici için yaygın bir senaryo haline gelmiştir. Bu yazıda, Python kullanarak bir klasördeki tüm görüntü dosyalarını okuma yöntemlerini adım adım ele alacağız.

Gerekli Kütüphaneler

Python’da görüntü dosyalarını okumak için kullanılabilecek birçok kütüphane bulunmaktadır. Bunların en popülerlerinden bazıları şunlardır:

  • PIL (Pillow): Python Imaging Library’nin (PIL) güncellenmiş versiyonu olan Pillow, görüntü işleme için en yaygın kullanılan kütüphanelerden biridir. Bu kütüphane, görüntü dosyalarını açma, işleme, dönüştürme ve kaydetme gibi çeşitli işlevler sunar.
  • OpenCV: Özellikle bilgisayarla görme (computer vision) projelerinde yaygın olarak kullanılan bir kütüphanedir. Video ve görüntüler üzerinde karmaşık işlemler yapmanıza olanak sağlar.
  • Matplotlib: Görselleştirme kütüphanesi olan Matplotlib, yalnızca görüntü dosyalarını okumakla kalmaz, aynı zamanda bunları görselleştirmek için de kullanılır.

Bu kütüphanelerin yüklenmesi için pip kullanabilirsiniz. Örneğin:

pip install Pillow

Görüntüleri Okuma

Bu bölümde, PIL (Pillow) kütüphanesini kullanarak bir klasördeki tüm görüntü dosyalarını nasıl okuyacağımızı göstereceğiz. İlk olarak, gerekli kütüphaneyi içe aktaralım ve ardından klasördeki tüm görüntü dosyalarını okuyacak bir fonksiyon tanımlayalım.

from PIL import Image
import os

def read_images_from_folder(folder_path):
    images = []
    for filename in os.listdir(folder_path):
        if filename.endswith('.png') or filename.endswith('.jpg') or filename.endswith('.jpeg'):
            img_path = os.path.join(folder_path, filename)
            img = Image.open(img_path)
            images.append(img)
    return images

Yukarıdaki kod, verilen bir klasördeki `.png`, `.jpg` veya `.jpeg` uzantılı tüm görüntü dosyalarını okuyan bir fonksiyondur. Bu işlemi yaparken:

  • Öncelikle belirtilen klasördeki tüm dosyaları listelemek için os.listdir() fonksiyonunu kullanıyoruz.
  • Daha sonra, her bir dosya adının uzantısını kontrol ediyoruz, böylece yalnızca görüntü dosyalarını okuyabiliyoruz.
  • Görüntü dosyasını açmak için PIL.Image.open() fonksiyonunu kullanıyoruz ve sonuçları bir listeye ekliyoruz.

Bu yöntemle, belirtilen klasördeki tüm görselleri kolaylıkla okuyabilirsiniz. Şimdi, bu fonksiyonu nasıl kullanacağımıza bakalım.

Fonksiyonun Kullanımı

Yukarıda tanımladığımız read_images_from_folder fonksiyonunu kullanmak için, onu çağırmanızı sağlayacak bir örnek oluşturalım:

folder_path = 'path/to/your/image/folder'
images = read_images_from_folder(folder_path)
for img in images:
    img.show()

Bu kod, istenen klasördeki tüm görüntü dosyalarını okuyacak ve ardından her birini gösterecektir. img.show() komutu, her bir görseli varsayılan görüntü görüntüleyiciyle açar. Bu sayede, okunan görüntülerinizi hızlıca kontrol edebilirsiniz.

Görüntü İşleme

Görüntü dosyalarını okuduktan sonra, üzerinde çeşitli işlemler gerçekleştirmek isteyebilirsiniz. Örneğin, görüntüleri yeniden boyutlandırma, döndürme veya filtre uygulama gibi işlemler yapabilirsiniz. Pillow kütüphanesi, bu tür işlemleri gerçekleştirmeniz için birçok yöntem sunar. Aşağıda bu işlemleri nasıl yapacağınızı göstereceğim:

Öncelikle, bir görüntüyü yeniden boyutlandırmak için:

resized_images = [img.resize((width, height)) for img in images]

Bu kod, okunan her bir görüntüyü belirtilen width ve height değerlerine göre yeniden boyutlandırır. Diğer bir popüler işlem ise görüntü döndürmedir:

rotated_images = [img.rotate(90) for img in images]

Yukarıdaki kod, her bir görüntüyü 90 derece döndürür. Bunun yanı sıra, diğer görüntü işleme teknikleri için Pillow kütüphanesinin zengin dokümantasyonuna başvurabilirsiniz.

Bir Klasördeki Görüntüleri Görselleştirme

Görüntüler üzerinde işlem yaptıktan sonra, bu görüntüleri görselleştirmek de önemli bir adımdır. Matplotlib kütüphanesini kullanarak görsellerimizi görselleştiriyoruz:

import matplotlib.pyplot as plt

def plot_images(images):
    plt.figure(figsize=(15, 10))
    for i, img in enumerate(images):
        plt.subplot(1, len(images), i + 1)
        plt.imshow(img)
        plt.axis('off')
    plt.show()

Bu fonksiyon, verilen görüntüleri yan yana görselleştirir. plt.subplot() fonksiyonu ile her bir alt grafikte görüntüleri yerleştiriyoruz ve plt.axis('off') ile eksenleri kapatıyoruz.

Hata Ayıklama ve İpuçları

Görüntüleri okuma işlemi sırasında birkaç yaygın hata ile karşılaşabilirsiniz. Örneğin:

  • Dosya Bulunamadı Hatası: Klasör yolunu yanlış yazdıysanız veya klasör mevcut değilse, bu hatayla karşılaşabilirsiniz. Klasör yolunu dikkatlice kontrol edin.
  • Desteklenmeyen Dosya Türü: Okumaya çalıştığınız dosya uzantısının Pillow tarafından desteklenmemesi durumunda bu hatayı alırsınız. Desteklenen uzantılara dikkat edin.
  • Bellek Hatası: Büyük görüntü dosyalarını okurken bellek hatası alabilirsiniz. Bu durumda, görüntüleri daha küçük boyutlarda kaydederek veya belleği yöneterek çözüm bulabilirsiniz.

Hatalarla başa çıkmak için, her okuma işlemi öncesinde dosya uzantısını ve dosya yolunu kontrol etmek iyi bir yaklaşımdır. Gerekirse hata yakalama mekanizmaları ekleyerek kullanıcı dostu hata mesajları oluşturabilirsiniz.

Sonuç

Python ile bir klasördeki tüm görselleri okumak oldukça basit bir işlemdir. Pillow gibi güçlü kütüphaneler kullanarak, sadece görüntüleri okumakla kalmaz, aynı zamanda üzerinde çeşitli işlemler yapabilir ve sonuçları görselleştirebilirsiniz. Bu makalede, bir klasördeki tüm görüntü dosyalarını okuma, işleme ve görselleştirme yöntemlerini öğrendiniz. Şimdi, kendi projelerinize bu bilgileri uygulayarak yaratıcı işler çıkarma zamanı!

Scroll to Top