Site icon Mobilhanem

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.

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.

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()
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.

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

Ç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()
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()
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()
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()
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.

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
Exit mobile version