Twórz własne filtry instagramowe w Pythonie
Jestem fanką filtrów instagramowych. Używam ich prawie zawsze. Wystarczy kliknięcie kilku przycisków, aby zdjęcie, które chcę opublikować, odpowiednio się przekształciło.
Czy przyszło Ci kiedyś do głowy stworzenie własnego filtru? Czy to w ogóle możliwe? Odpowiedź brzmi - TAK!
W tym tekście pokażę Ci, jak możesz stworzyć filtry obrazu za pomocą Pythona.
Musisz zainstalować następujące biblioteki Pythona, jeśli jeszcze ich nie masz:
opencv-python
matplotlib
numpy
Filtr rozmycia
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('input-image.jpg')
dst = cv2.GaussianBlur(im,(5,5),cv2.BORDER_DEFAULT)
plt.imshow(dst)
plt.show()
po lewej - oryginalny obraz domu (zdjęcie: giovanni gargiulo), po prawej - zdjęcie po zastosowaniu filtru rozmycia
po lewej - oryginalny obraz granatów (zdjęcie: Simon Matzinger), po prawej - obraz po zastosowaniu filtru rozmycia
Filtr wykrywania krawędzi
import cv2
import matplotlib.pyplot as plt
im = cv2.imread('input-image.jpg')
edges = cv2.Canny(im,100,300)
plt.imshow(edges)
plt.show()
po lewej - oryginalny obraz domu (zdjęcie: giovanni gargiulo), po prawej - djęcie po zastosowaniu filtru wykrywającego krawędzie
po lewej - oryginalny obraz słonecznika (zdjęcie: Capri23auto), po prawej - obraz po zastosowaniu filtru wykrywającego krawędzie
Filtr vintage
import cv2
import numpy as np
from matplotlib import pyplot as plt
im = cv2.imread('input-image.jpg')
rows, cols = im.shape[:2]
# Create a Gaussian filter
kernel_x = cv2.getGaussianKernel(cols,200)
kernel_y = cv2.getGaussianKernel(rows,200)
kernel = kernel_y * kernel_x.T
filter = 255 * kernel / np.linalg.norm(kernel)
vintage_im = np.copy(im)
# for each channel in the input image, we will apply the above filter
for i in range(3):
vintage_im[:,:,i] = vintage_im[:,:,i] * filter
plt.imshow(vintage_im)
plt.show()
po lewej - oryginalny obraz domu (zdjęcie: giovanni gargiulo), po prawej - zdjęcie po zastosowaniu filtru vintage
po lewej - oryginalny obraz słonecznika (zdjęcie: Capri23auto), po prawej - zdjęcie po zastosowaniu filtru vintage
Oryginał tekstu w języku angielskim przeczytasz tutaj.