Merhaba arkadaşlar, bu yazımda da sizlere görüntü işlerken en çok kullandığımız Gri Ton resim nasıl elde edebileceğimizi göstereceğim.
Bunun için çok fazla yöntem mevcut. Ben hem en basit halini hem, bir metot kullanarak hem de elle yazarak oluşturacağım. Kütüphaneleri eklemeyi unutmayın.
1) En Basit Yol İle Gri Ton
Görüntüyü eklerken imread metotunu kullanıyoruz. Bu metot içerisinde ikinci bir parametre olarak 0 verirseniz gri ton olarak sizlere görseli ekler.
import cv2 import numpy as np resim = cv2.imread("BoluYedigoller.jpg",0) #0 ekledik cv2.imshow("Gri Ton Okuma",resim)
2) OpenCV cvtColor Metotu ve BGR2GRAY
cvtColor ve bu metotun içinde de COLOR_BGR2GRAY kullanarak yapabiliriz.Hemen örneğine ve ekran görüntüsüne bakalım.
import cv2 import numpy as np resim = cv2.imread("BoluYedigoller.jpg") # ,0 diyerek de gri ton yapabiliriz. cv2.imshow("Orjinal Resim",resim) # Hazır Metot Kullanarak Gri Tona Çevirme griTon = cv2.cvtColor(resim,cv2.COLOR_BGR2GRAY) cv2.imshow("Gri Ton",griTon)
Kullanımı yukarıdaki gibidir. En çok kullanılan yöntemdir diyebilirim. Bir de ben hazır fonksiyon kullanmam kendi fonksiyonumu kendim yazarım diyorsanız 3. yolu sizler için ekliyorum.
3) Elle Fonksiyon Oluşturma
Bu kısımda şunu bilmemiz gerekiyor. Bir görseli gri tona çevirebilmek için her bir pikselde gezmek ve şu formüle göre dolaşmamız gerekiyor. Mavi(B)*0.114 + Yeşil(G)*0.587 + Kırmızı(R)*0.299 formülü ile yapıyoruz.(Yapıyormuşuz yeni öğrendim 🙂 )
Öncelikle oluşturduğum fonksiyonu ve sonrasında tüm kodları ekleyeceğim.
def griTonYap(resim): en,boy,katman = np.shape(resim) yeniResim = np.zeros((en,boy,katman),dtype=np.uint8) for i in range(en): for j in range(boy): yeniResim[i:,j] = resim[i,j,0]*0.114 + resim[i,j,1]*0.587 + resim[i,j,2]*0.299
Burada her görsele göre olması için en, boy, katmanı aldığımız resmin shape’i ne göre veriyoruz. Aldığımız bilgilere göre sıfırlardan ya da birlerden oluşan yeni bir matris oluşturuyoruz.
Daha sonra en boy ile döngü içine girerek her bir piksel de gezip o piksel değerine formülümüzdeki gibi ekleme yapıyoruz. İşlemimiz bu kadar. Aşağıya tüm kodları ekliyorum kolay gelsin.
[the_ad id=”1292″]
import cv2 import numpy as np #%% resim = cv2.imread("BoluYedigoller.jpg") # ,0 diyerek de gri ton yapabiliriz. cv2.imshow("Orjinal Resim",resim) #%% Hazır Metot Kullanarak Gri Tona Çevirme griTon = cv2.cvtColor(resim,cv2.COLOR_BGR2GRAY) cv2.imshow("Gri Ton",griTon) #%% Hazır Metot Kullanmadan Gri Tona Çevirme def griTonYap(resim): en,boy,katman = np.shape(resim) yeniResim = np.zeros((en,boy,katman),dtype=np.uint8) for i in range(en): for j in range(boy): yeniResim[i:,j] = resim[i,j,0]*0.114 + resim[i,j,1]*0.587 + resim[i,j,2]*0.299 cv2.imshow("Yeni Gri Resim",yeniResim) griTonYap(resim)
Son olarak Ekran Görüntümüz:
Umarım anlaşılır olmuştur. Sizlerde çeşitli görseller ile tekrar edebilirsiniz.