Sabina Pokhrel
Sabina PokhrelCustomer Success AI Engineer @ Xailient

Twórz własne filtry instagramowe w Pythonie

Dowiedz się, jak tworzyć filtry obrazu na Instagrama przy użyciu OpenCV w Pythonie.
22.10.20192 min
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.

<p>Loading...</p>