OpenCv’de Piramit Oluşturma ve Dörtgen Ekleme

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 Format ve Çözünürlük Değiştirme’den bahsettik. Python ile Görüntü İşleme dersinde bu hafta ise OpenCV’de Piramit Oluşturma ve Dörtgen Ekleme konularından  bahsedeceğiz. Eğer bir önceki dersimizi inceleme fırsatınız olmadıysa OpenCv’de  Format ve Çözünürlük Değiştirme  dersimize buradan ulaşabilirsiniz. Resim Üzerinde Piramit Oluşturma ve Dörtgen Ekleme işlemlerine başlamadan önce  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

Resim Üzerinde Piramit Oluşturma İşlemi

Bu konumuzda görüntü piramitlerinden bahsedeceğiz.  Genellikle varsayılan resim özellikleri ile işlemlerimizi yapıyorduk. Bazen yapacağımız işlemlere göre aynı resmin farklı çözünürlüklerde işlem yapmamız gerekebilir. Mesela resimde yüz bulma, nesne tanıma yaparken farklı çözünürlüklerdeki resimlere ihtiyacımız olacaktır. Farklı çözünürlükteki oluşturucağımız görüntülere görüntü piramiti diyoruz.

 

mobilhanem_goruntupiramit
Görüntü Piramiti

İki tür görüntü piramidi vardır. Gauss Piramidi  ve Laplace Piramidi. Bizim kullanacağımız piramit olan Gauss Piramidinde daha yüksek seviye (düşük çözünürlük), alt seviye (daha yüksek çözünürlük) görüntüde ardışık satırlar ve sütunlar kaldırılarak oluşturulur. Ayrıca yukarıdaki resimde gördüğünüz gibi piramidin en üst tepesine çıkıldıkça görüntünün çözünürlüğü düşmektedir. Kısa bir teorik bilgi verdikten sonra uygulamamıza geçebiliriz.

Öncelikle proje dosyamızda yeni bir Python dosyasını oluşturup opencv kütüphanemizi ekleyelim.

import cv2

Daha sonra standart olarak yaptığımız bir işlem olan dosyamızdan herhangi bir resmimizi okuyalım.

import cv2

resim=cv2.imread('gunbatimi.jpg')
cv2.imshow('Piramit Ornek Resim',resim)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

mobilhanem_resimoku
Resim Okuma İşlemi

 

Resim okuma işlemimizi gerçekleştirdikten sonra piramit işlemi ile resmimizi bir üst seviyeye getirelim.

import cv2

resim=cv2.imread('gunbatimi.jpg')
piramitustseviye=cv2.pyrUp(resim);
cv2.imshow('Piramit Ornek Resim',resim)
cv2.imshow('Piramit Bir Ust Seviye Resim',piramitustseviye)
cv2.waitKey(0)
cv2.destroyAllWindows()

Kod bloğunda bulunan “cv2.pyrUp(resim)”  satırı ile resmin piramit işlemi ile bir üst seviyesine getirerek piksel seviyesini artırdık.

mobilhanem_goruntupiramit_bir_ust_seviye
Bir Üst Seviye

 

Şimdi ise “cv2.pyrDown(resim)” kod satırı ile bir alt seviyeye getirerek piksel değerini düşürelim.

import cv2

resim=cv2.imread('gunbatimi.jpg')
piramitaltseviye=cv2.pyrDown(resim);
cv2.imshow('Piramit Ornek Resim',resim)
cv2.imshow('Piramit Bir Alt Seviye Resim',piramitaltseviye)
cv2.waitKey(0)
cv2.destroyAllWindows()
mobilhanem_goruntupiramit_biraltseviye
Bir Alt Seviye

 

Şimdi yazdığımız kodları birleştirerek genel bir bakış yapalım.

import cv2

resim=cv2.imread('gunbatimi.jpg')
piramitustseviye=cv2.pyrUp(resim);
piramitaltseviye=cv2.pyrDown(resim);

cv2.imshow('Piramit Ornek Resim',resim)
cv2.imshow('Piramit Bir Alt Seviye Resim',piramitaltseviye)
cv2.imshow('Piramit Bir Ust Seviye Resim',piramitustseviye)
cv2.waitKey(0)
cv2.destroyAllWindows()

 

mobilhanem_goruntupiramit_tum_seviye
Piramit İşlemlerimizin Birleştirilmiş Hali

 

Yukarıda göründüğü gibi piramit işlemimiz ile bir üst ve bir alt seviyeye göre resimlerimizi ekranda gösterdik. Görüntü piramitleri denmesinin sebebi resimlerimizi iç içe getirdiğimiz vakit piramit şeklini andırmasıdır.

Resime Dörtgen Ekleme İşlemi

Resmimize dörtgen ekleme işlemi yaparken resmimizin koordinatlarını kullanmamız gerekecektir. Oluşturulacak olan dikdörtgenin birinci koordinat bilgisi resmimizin sol üst köşe, ikinci koordinat bilgisi ise sağ alt köşedir.

mobilhanem_koordinatbilgisi
Koordinat Bilgisi

Tekrar örnek resmimizi okuyalım.

import cv2

resim=cv2.imread('gunbatimi.jpg')
cv2.imshow('Ornek Resim',resim)
cv2.waitKey(0)
cv2.destroyAllWindows()

Resmimizi okuduktan sonra belirleyeceğimiz koordinatlarda dörtgeni oluşturalım. Dörtgeni oluşturmak için rectangle fonksiyonunu kullanacağız.  Öncelikle kullanacağımız fonksiyonumuzun parametrelerini inceleyelim.

mobilhanem_rectangleparametre
Rectangle Fonksiyonunun Parametreleri

 

Rectangle Fonksiyonunun Parametreleri

  1. Dörtgen eklenecek olan resim
  2. Oluşturulacak olan dörtgenin koordinat başlangıç noktası
  3. Oluşturulacak olan dörtgenin koordinat bitiş noktası
  4.  RGB renk kodları (değerleri değiştirerek farklı renkler elde edebilirsiniz.)
  5. Dörtgenin çerçeve kalınlığı
import cv2

resim=cv2.imread('gunbatimi.jpg')

cv2.imshow('Ornek Resim',resim)
cv2.rectangle(resim,(350,40),(200,230),(125,40,20),3)
cv2.imshow('Dortgen Eklenmis Resim',resim)
cv2.waitKey(0)
cv2.destroyAllWindows()
mobilhanem_rectangle
Resime Dörtgen Eklenmiş Hali

 

Yukarıdaki resimde gördüğünüz üzere belirlediğimiz örnek resmin başlangıç ve bitiş koordinatlarına göre dörtgenimizi oluşturduk. Sizde fonksiyon içerisinde vereceğiniz koordinat aralıkları ve diğer parametreler ile resim üzerinde dörtgen oluşturabilirsiniz.

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  Piramit Oluşturma  ve  Dörtgen Ekleme‘den bahsettik. Umarım sizin için faydalı bir yazı olmuştur. Bir sonraki  OpenCv ‘de Temel İşlemlerde devam edeceğimiz Resime Çizgi ve Daire Ekleme ile Resime Metin Ekleme İşlemleri 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 1 : Link

Kaynak 2: Link

8

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?