Python ve OpenCV Kullanarak Resimlere Elastik Efekti Verme

0 724

Açık kaynak kodlu görüntü işleme kütüphanesi OpenCV ve Python kullanarak hazırladığımız resim ve video işleme örneklerine devam ediyoruz. Bu örneğimizde bir resme OpenCV görüntü işleme kütüphanesini kullanarak Python’da elastik efekti vereceğiz.

Daha önceki yazılarımızda OpenCV’de temel resim işleme olaylarını, video kaydetme, video oynatma, video’yu farklı işlemlerden geçirme gibi örnek yazılar hazırlamıştık. Aynı zamanda OpenCV ve Python ile yüz tanıma uygulamasına buradan  ve tüm OpenCV örneklerimize buradan gidebilirsiniz.

Python Programlamaya yeni başlayanla için derslerimizde göz atabilirsiniz.

OpenCV Kullanarak Resimlere Elastik Efekti Verme

Kodumuzun kaynağı olan github linkine buradan erişebilirsiniz.

Bu işlemi online olarak yapan bir web sitesine erişmek için de buraya gidebilirsiniz.

Kodumuzun tamamı şu şekilde :

import numpy as np
import cv2 
from scipy.ndimage.interpolation import map_coordinates
from scipy.ndimage.filters import gaussian_filter


def elastic(image, alpha, sigma, random_state=None):
#Elastic deformation of images as described in [Simard2003]_.
#    .. [Simard2003] Simard, Steinkraus and Platt, "Best Practices for
#       Convolutional Neural Networks applied to Visual Document Analysis", in
#       Proc. of the International Conference on Document Analysis and
#       Recognition, 2003.

    if random_state is None:
        random_state = np.random.RandomState(None)


    #print(random_state)
    shape = image.shape
    dx = gaussian_filter((random_state.rand(*shape) * 2 - 1), sigma, mode="constant", cval=0) * alpha
    dy = gaussian_filter((random_state.rand(*shape) * 2 - 1), sigma, mode="constant", cval=0) * alpha
    dz = np.zeros_like(dx)


    x, y, z = np.meshgrid(np.arange(shape[1]), np.arange(shape[0]), np.arange(shape[2]))


    indices = np.reshape(y+dy, (-1, 1)), np.reshape(x+dx, (-1, 1)), np.reshape(z, (-1, 1))
    distored_image = map_coordinates(image, indices, order=1, mode='nearest')  #wrap,reflect, nearest


    return distored_image.reshape(image.shape)

#main
#file read
o_img = cv2.imread('imp-5013967_1920.jpg')
elMat = elastic(o_img, alpha=5000, sigma=8, random_state=None)

cv2.namedWindow('origin',0)
cv2.imshow('origin', o_img)
cv2.namedWindow('elastic',0)
cv2.imshow('elastic', elMat)

cv2.waitKey(0)

Kodumuzu çalıştırdıktan sonra elde edeceğimiz görüntü altta gördüğünüz gibi olacaktır.

python opencv elastik resim elde etme
python opencv elastik resim elde etme

Yukarıda kullandığımız imajı Pixabay sitesinden indirdik. Kullanımı ücretsiz olan aynı imajı kullanmak isterseniz alttan indirebilirsiniz.

python opencv elastik resim elde etme

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bununla iyi olduğunuzu varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul etmek Mesajları Oku