Python ve OpenCV Kullanarak Resimlere Elastik Efekti Verme
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.

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