OpenCv’de Resim Çevçeveleme ve Çözünürlüğe Göre İşlem

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 İşlemleri
  • Resim Ö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.

mobilhanem_resim_ekleme
Resim Ekleme İşlemi

 

Resmin Eklenmiş Hali

 

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()
mobilhanem_resim_gosterme
Resim Gösterme İşlemi

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.

mobilhanem_cerceve_ekleme_fonksiyon
copyMakeBorder Parametreleri

 

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()
mobilhanem_cerceve_eklendi
Resmin Çerçeve Eklenmiş Hali

 

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()
mobilhanem_cerceve_reflect
BORDER REFLECT Kullanımı

 

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()
mobilhanem_cerceve_replicate
BORDER REPLICATE Kullanımı

 

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()
mobilhanem_cerceve_wrap
BORDER WRAP Kullanımı

 

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_yeniden_boyutlandirna
640×480’lik Yeniden Boyutlandırılmış Penceremiz

 

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

Yunus Emre Aydın

Yazılım Mühendisi

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?