Nasza strona używa cookies. Dowiedz się więcej o celu ich używania i zmianie ustawień w przeglądarce. Korzystając ze strony, wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki. Rozumiem

Twórz własne filtry instagramowe w Pythonie

Sabina Pokhrel Customer Success AI Engineer / Xailient
Dowiedz się, jak tworzyć filtry obrazu na Instagrama przy użyciu OpenCV w Pythonie.
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.

Lubisz dzielić się wiedzą i chcesz zostać autorem?

Podziel się wiedzą z 120 tysiącami naszych czytelników

Dowiedz się więcej