-
Notifications
You must be signed in to change notification settings - Fork 0
/
boundaries.py
24 lines (22 loc) · 820 Bytes
/
boundaries.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from PyQt5.QtGui import QImage
from PIL import Image
from PyQt5.QtGui import QPixmap
from matplotlib import pyplot as plt
from operation import *
import numpy as np
from skimage.filters import roberts, sobel, scharr, prewitt
class BoundariesOperation(Operation):
@staticmethod
def execute(input_image, settings):
filter_number = settings.boundaries_settings[0]
grayscale = input_image.convert('L')
if filter_number == 1:
edges = roberts(grayscale)
elif filter_number == 2:
edges = prewitt(grayscale)
elif filter_number == 3:
edges = scharr(grayscale)
elif filter_number == 4:
edges = sobel(grayscale)
array = np.uint8(plt.cm.gist_earth(edges) * 255)
return Image.fromarray(array).convert(mode='L')