Hedefler
- Görüntü okumayı, bunu görüntülemeyi ve geri kaydetmeyi,
- Birkaç cv2.imread(), cv2.imshow(), cv2.imwrite() gibi fonksiyonları kullanmayı,
- İsteğe bağlı, Matplotlib ile nasıl görüntüleri gösterebileceğimizi öğreneceğiz.
Görüntü Okuma
Görüntü okumak için cv2.imread() fonksiyonunu kullanacağız. Görüntü çalışma dizininde olmalıdır ya da tam adresi verilmelidir.
İkinci argüman görüntünün nasıl okunacağı ile ilgi bir bayraktır.
- IMREAD_COLOR: Renkli görüntü yükler. Görüntünün herhangi şeffaflığı ihmal edilecektir. Varsayılan bayraktır.
- IMREAD_GRAYSCALE: Gri tonlamalı resim yükler.
- IMREAD_UNCHANGED: Alfa kanalı ile yükler.
Not: Bu üç bayrak parametresi yerine sırasıyla basit 1, 0 veya -1 sayılarını kullanabilirsiniz.
Kod örneği:
import numpy as np import cv2 # Gri tonlamalı resim yükleme img = cv2.imread('deneme.jpg', 0)
Uyarı: Eğer görüntü yolu yanlış ise hiçbir hata çıktısı almayacaksınız, hatta print img size None cevabını döndürecektir.
Görüntü Görüntüleme
Bir pencerede görüntü/resim görüntülemek için cv2.imshow() fonksiyonu kullanacağız. Bu pencere otomatik olarak resim boyutuna göre ayarlanacaktır.
İlk parametre bir string olup pencere ismidir. İkinci parametre ise bizim görüntümüz. İstediğiniz gibi birçok pencere oluşturabilirsiniz, ama farklı pencere adlarıyla.
cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
Pencerenin nasıl gözüktüğü ile ilgili bir ekran görüntüsü (Windows 8.1’de):
Klavye metodu için cv2.waitKey() kullanılır. Alacağı parametre milisaniye cinsinden zamandır. Bu fonksiyon herhangi bir klavye olayı için belirtilen süre kadar bekler. Hiçbir şeye basılmadığında program devam eder. Eğer 0 yazılırsa tuşa basılması için sonsuza kadar bekler. Bunu farklı tuş algılamaları içinde kullanabiliriz, ESC gibi önemli tuş basılması gibi durumları ileride tartışacağız.
Yarattığımız pencereleri kapatmak için tabiri caizse yıkmak için cv2.destroyAllWindows() kullanacağız. Eğer belirlenen bir pencereyi kapatmak için cv2.destroyWindow()’a parametre olarak pencere adını girebiliriz.
Not: Pencere yaratmak ve görüntü yüklemek de özel durumlar söz konusu olabilir. Bu durumda, pencerenin yeniden boyutlandırılabilir olup olmadığını belirleyebilirsiniz. Bunun için cv2.namedWindow() kullanılabilir. Varsayılan parametresi cv2.WINDOWS_AUTOSIZE’dır. Ama parametre cv2.WINDOW_NORMAL olarak belirtilirse, pencereyi yeniden boyutlandırabilirsiniz. Boyutların büyük olduğu görüntülerde işimize yarayacaktır ve pencerenin barına iz eklenecektir.
cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows()
Görüntü Yazma
Görüntü yazmak/kaydetme için cv2.imwrite() fonksiyonu kullanacağız.
İlk parametre dosya adı, ikinci parametre kaydetmek istediğiniz görüntü adı olacaktır.
cv2.imwrite('messigray.png',img)
Bu çalıştığımız dizine PNG formatında kaydedecektir.
Özetle
Görüntüyü gri tonlamalı açar, s’ye basılırsa kaydeder veya ESC ye basılırsa çıkış yapan bir program;
import numpy as np import cv2 img = cv2.imread('messi5.jpg',0) cv2.imshow('image',img) k = cv2.waitKey(0) & 0XFF if k == 27: # wait for ESC key to exit cv2.destroyAllWindows() elif k == ord('s'): # wait for 's' key to save and exit cv2.imwrite('messigray.png',img) cv2.destroyAllWindows()
Uyarı: Eğer 64-bit makine kullanıyorsanız, k = cv2.waitKey(0) komut satırında şöyle bir değişiklik yapmalısınız: k = cv2.waitKey(0) & 0xFF
Bilgi icin cok tesekkurler
merhaba iyi günler görüntü ayarları için bir kod parçası yada nasıl arayabilirim