Merhaba arkadaşlar, Mobilhanem.com sitemizde Python ile Görüntü İşleme Dersleri eğitim serisine kaldığımız yerden devam ediyoruz. Geçen dersimizde OpenCv’de Resim Okuma, Yazma İşlemleri ve Resim Özellikleri’nden bahsettik. Python ile Görüntü İşleme dersinde bu hafta ise Resim Çevçeveleme İşlemi ve Çözünürlüğe Göre Pencere Boyutlandırma‘dan bahsedeceğiz. Eğer bir önceki dersimizi inceleme fırsatınız olmadıysa OpenCv’de Resim Okuma, Yazma İşlemleri ve Resim Özellikleri dersimize buradan ulaşabilirsiniz.
OpenCv’de Temel İşlemler dersimizde işleyeceğimiz konu başlıklarımızı tekrar gözden geçirelim.
Resim Okuma ve Yazma İşlemleriResim Özellikleri- Resim Çerçeveleme İşlemi
- Çözünürlüğe Göre Pencere Boyutlandırma
- Format ve Çözünürlük Değiştirme
- Resim üzerinde piramit oluşturma (Görüntü işleme durumlarına göre resim boyutlandırma)
- Resime Dörtgen Ekleme
- Resime Çizgi ve Daire Ekleme
- Resime Metin Ekleme İşlemleri
Geçen hafta OpenCv’de Temel İşlemler bölümü maddelerinde yer alan Resim Okuma ve Yazma İşlemleri ile Resim Özelliklerini bitirmiştik. Şimdi OpenCv’de Resim Çevçeveleme İşlemi ve Çözünürlüğe Göre Pencere Boyutlandırma işlemlerine hep birlikte bakalım.
Projemize öncelikle çerçeveleme işlemi yapacağımız bir resim ekleyelim. Bu işlemi kopyala yapıştır ile gerçekleştirebilirsiniz.
Resmimizi ekledikten sonra şimdi çerçeveleme işlemi için kodlarımızı yazabiliriz.
import cv2
Öncelikle cv2 kütüphanemizi projemize dahil edelim. Projemize dahil ettikten sonra çevçeveleme işlemine başlayalım. İlk öncelikle resmimizi ekranda imshow komutu ile ekranımızda gösterelim.
import cv2 resim=cv2.imread('ball.JPG') cv2.imshow("Futbol Topu",resim) cv2.waitKey(0) cv2.destroyAllWindows()
Resmimizi gösterdikten sonra çerçeve rengini belirleyelim.
cerceve_rengimiz=[144, 12, 63 ]
İstediğim herhangi rengin kodunu cervece_rengimiz adlı değişkenimize gönderdik. Çerçeve işlemimizde copyMakeBorder fonksiyonunu kullanacağız. Bu fonksiyonumuzun birden fazla parametresi bulunmaktadır. Kullanacağımız parametreler isimleri ve açıklamaları aşağıdaki gibidir.
src: Çerçeveleme işlemi yapacağımız resmin yolu.
top / bottom / left / right : Üst,alt,sol ve sağ kısımlarında yer alan çerçevenin piksel bazında kalınlık oranları belirtilir.
value: Çerçeveleme türlerine göre renk veya referans noktaları belirlenir.
borderType: Çerçeveleme türleri yer alır.
BorderType Türleri
- cv2.BORDER_CONSTANT: Belirlenen renkte çerçeve ekler.
- cv2.BORDER_REFLECT: Resmin sınırlar ayna efekti eklenir.
- cv2.BORDER_ REPLICATE: Resmin belirlenen piksel alanından çekme yapılmış gibi bir görüntü verir.
- cv2.BORDER_WRAP: Son elemanının belli bir kısmında kesme işlemi yapar.
Çerçeve rengimizi verdikten sonra rengimizi ve parametrelerimizi cv2.copyMakeBorder fonsiyonunda yerine koyalım. Çerçeve kalınlığında üst,alt,sol ve sağ kısımları için 10px’lik değer verdim. Cerceve değişkenine okuma yaptığımız resmi,çerçeve kalınlığını ,türünü ve rengini verdikten sonra programımızı derleyelim.
import cv2 cerceve_rengimiz=[144, 12, 63 ] resim=cv2.imread('ball.JPG') cerceve=cv2.copyMakeBorder(resim,10,10,10,10,cv2.BORDER_CONSTANT,value=cerceve_rengimiz) cv2.imshow("Futbol Topu",cerceve) cv2.waitKey(0) cv2.destroyAllWindows()
Yukarıdaki resimde gördüğünüz gibi BORDER_CONSTANT tipinde çerçevemizi başarıyla ekledik. Gelin şimdi diğer çerçeve türlerimizi kontrol edelim.
BORDER_REFLECT
import cv2 cerceve_rengimiz=[144, 12, 63 ] resim=cv2.imread('ball.JPG') #cerceve=cv2.copyMakeBorder(resim,10,10,10,10,cv2.BORDER_CONSTANT,value=cerceve_rengimiz) cerceve= cv2.copyMakeBorder(resim,50,50,50,50,cv2.BORDER_REFLECT) cv2.imshow("Futbol Topu",cerceve) cv2.waitKey(0) cv2.destroyAllWindows()
BORDER_REPLICATE
import cv2 cerceve_rengimiz=[144, 12, 63 ] resim=cv2.imread('ball.JPG') #cerceve=cv2.copyMakeBorder(resim,10,10,10,10,cv2.BORDER_CONSTANT,value=cerceve_rengimiz) #cerceve= cv2.copyMakeBorder(resim,50,50,50,50,cv2.BORDER_REFLECT) cerceve= cv2.copyMakeBorder(resim,50,50,50,50,cv2.BORDER_REPLICATE) cv2.imshow("Futbol Topu",cerceve) cv2.waitKey(0) cv2.destroyAllWindows()
BORDER_WRAP
import cv2 cerceve_rengimiz=[144, 12, 63 ] resim=cv2.imread('ball.JPG') #cerceve=cv2.copyMakeBorder(resim,10,10,10,10,cv2.BORDER_CONSTANT,value=cerceve_rengimiz) #cerceve= cv2.copyMakeBorder(resim,50,50,50,50,cv2.BORDER_REFLECT) cerceve= cv2.copyMakeBorder(resim,50,50,50,50,cv2.BORDER_WRAP) cv2.imshow("Futbol Topu",cerceve) cv2.waitKey(0) cv2.destroyAllWindows()
Yukarıda çeşitli çerçeveleme işlemlerini gördük. Yaptığımız işlemi daha net görebilmek için 50px’lik bir değer kullandım. Sizde resminize göre bu değerleri değiştirebilirsiniz.
Çözünürlüğe Göre Pencere Boyutlandırma
Şimdi ise mevcut resmimizin çözünürlüğüne göre penceremizi boyutlandırma işlemini yapalım. Projenize herhangi bir resim ekleyerek bu işlemi gerçekleştirelim. Ben yüksek bir çözünürlükte olan (6000×4000) resim kullanıyorum. Şimdi aşağıdaki kod bloğumuzu derlemeden önce inceleyelim.
import cv2 resim=cv2.imread("manzara.JPG") cozunurluk=640,480 resim_genislik_olcegi = cozunurluk[0] / resim.shape[1] resim_yukseklik_olcegi = cozunurluk[1] / resim.shape[0] yeni_olcek_degeri=min(resim_genislik_olcegi,resim_yukseklik_olcegi) pencere_genislik= int(resim.shape[1]*yeni_olcek_degeri) pencere_yukseklik=int(resim.shape[0]*yeni_olcek_degeri) cv2.namedWindow('Manzara',cv2.WINDOW_NORMAL) cv2.resizeWindow('Manzara',pencere_genislik,pencere_yukseklik) cv2.imshow('Manzara',resim) cv2.waitKey(0) cv2.destroyAllWindows()
İlk öncelikle imread fonksiyonumuz ile resmimizi resim değişkenimize atıyoruz. Belirlediğimiz ekran çözünürlüğe göre cozunurluk adında değişken oluşturup bu çözünürlük değerlerini değişkenimize gönderiyoruz. Resmimizin pencere boyutunda kullanacağımız genişlik ölçeği için shape[1] komutunu kullanarak mevcut resmimizin genişlik ölçeğini alıyoruz. Aynı işlemi shape[0] komutunu kullanarak yükseklik için yapıyoruz. Bizim belirlediğimiz çözünürlük değişkenimizin genişlik ve yükseklik değerini resmimizden aldığımız genişlik ve yükseklik değerine bölüyoruz. Ortaya çıkan değerlerin minimum değerlerini alıp yeni ölçek değerimizi oluşturuyoruz. Daha sonra yeni genişlik ve yükseklik değerlerimizi ortaya çıkarıyoruz. Bu işlemden sonra namedWindow fonksiyonunda yer alan ve boyutlandırılabilir bir pencere kullanabilmek için WINDOW_NORMAL özelliğini seçiyoruz. Yeni genişlik ve yükseklik değerlerimizi resizeWindow fonsiyonunda yerine koyarak işlemimizi tamamlıyoruz.
Mobilhanem.com da Python ile Görüntü İşleme serisinde bir dersin daha sonuna geldik. Bu hafta Python ile Görüntü İşleme dersimizde OpenCv’de Resim Çevçeveleme İşlemi ve Çözünürlüğe Göre Pencere Boyutlandırma‘dan bahsettik. Umarım sizin için faydalı bir yazı olmuştur. Bir sonraki OpenCv ‘de Temel İşlemlerde devam edeceğimiz Format ve Çözünürlük Değiştirme dersinde görüşmek üzere. Eksik ya da yanlış gördüğünüz bir şey varsa lütfen iletişime geçmekten çekinmeyin.
Tüm Görüntü İşleme Dersleri için tıklayınız.
Kaynak : Link
11