118 lines
3.1 KiB
Python
118 lines
3.1 KiB
Python
import numpy as np
|
|
import cv2
|
|
|
|
|
|
def my_roberts(slika):
|
|
kernalX = np.array([[1,0],[0,-1]])
|
|
kernalY = np.array([[0,1],[-1,0]])
|
|
|
|
slika_robov = np.zeros(slika.shape)
|
|
|
|
height, width = slika.shape
|
|
|
|
for y in range(0, height-2):
|
|
for x in range(0, width-2):
|
|
|
|
subImg = slika[y:y+2, x:x+2]
|
|
kernalResultX = np.sum(kernalX * subImg)
|
|
kernalResultY = np.sum(kernalY * subImg)
|
|
|
|
kernalResult = np.absolute( kernalResultX ) + np.absolute( kernalResultY )
|
|
slika_robov[y, x] = kernalResult
|
|
|
|
slika_robov = np.uint8(slika_robov)
|
|
return slika_robov
|
|
|
|
def my_prewitt(slika):
|
|
kernalX = np.array([[-1, -1, -1], [0, 0, 0], [1, 1, 1]])
|
|
kernalY = np.array([[-1, 0, 1], [-1, 0, 1], [-1, 0, 1]])
|
|
|
|
slika_robov = np.zeros(slika.shape)
|
|
|
|
height, width = slika.shape
|
|
|
|
for y in range(1, height-2):
|
|
for x in range(1, width-2):
|
|
|
|
subImg = slika[y-1:y+2, x-1:x+2]
|
|
kernalResultX = np.sum(kernalX * subImg)
|
|
kernalResultY = np.sum(kernalY * subImg)
|
|
|
|
kernalResult = np.absolute( kernalResultX ) + np.absolute( kernalResultY )
|
|
slika_robov[y, x] = np.absolute(kernalResult)
|
|
|
|
|
|
slika_robov = np.uint8(slika_robov)
|
|
return slika_robov
|
|
|
|
def my_sobel(slika):
|
|
kernalX = np.array([[-1, -3, -1], [0, 0, 0], [1, 3, 1]])
|
|
kernalY = np.array([[-1, 0, 1], [-3, 0, 3], [-1, 0, 1]])
|
|
|
|
slika_robov = np.zeros(slika.shape)
|
|
|
|
height, width = slika.shape
|
|
|
|
for y in range(1, height-2):
|
|
for x in range(1, width-2):
|
|
|
|
subImg = slika[y-1:y+2, x-1:x+2]
|
|
kernalResultX = np.sum(kernalX * subImg)
|
|
kernalResultY = np.sum(kernalY * subImg)
|
|
|
|
kernalResult = np.absolute( kernalResultX ) + np.absolute( kernalResultY )
|
|
slika_robov[y, x] = np.absolute(kernalResult)
|
|
|
|
|
|
slika_robov = np.uint8(slika_robov)
|
|
return slika_robov
|
|
|
|
def canny(slika):
|
|
slika_robov = cv2.Canny(slika, 0, 0)
|
|
return slika_robov
|
|
|
|
def spremeni_kontrast(slika, alfa, beta):
|
|
return cv2.convertScaleAbs(slika, alpha=alfa, beta=beta)
|
|
|
|
img = cv2.imread('lenna.png', 0)
|
|
cv2.imshow('lenna', img)
|
|
#
|
|
#imgRoberts = my_roberts(img)
|
|
#cv2.imshow('lenna_roberts', imgRoberts)
|
|
#
|
|
#imgPrewitt = my_prewitt(img)
|
|
#cv2.imshow('lenna_prewitt', imgPrewitt)
|
|
#
|
|
#imgSobel = my_sobel(img)
|
|
#cv2.imshow('lenna_sobel', imgSobel)
|
|
|
|
img2 = spremeni_kontrast(img, 1.5, 0)
|
|
cv2.imshow('lenna2i', img2)
|
|
cv2.imshow('lenna2', my_sobel(img2))
|
|
|
|
img3 = spremeni_kontrast(img, 0.5, 1)
|
|
cv2.imshow('lenna3i', img3)
|
|
cv2.imshow('lenna3', my_sobel(img3))
|
|
|
|
windowName = 'lenna_canny'
|
|
val1 = 0
|
|
val2 = 0
|
|
def on_change1(val):
|
|
global val1
|
|
val1 = val
|
|
imgCanny = cv2.Canny(img, val1, val2)
|
|
cv2.imshow(windowName, imgCanny)
|
|
|
|
def on_change2(val):
|
|
global val2
|
|
val2 = val
|
|
imgCanny = cv2.Canny(img, val1, val2)
|
|
cv2.imshow(windowName, imgCanny)
|
|
|
|
imgCanny = canny(img)
|
|
cv2.imshow(windowName, imgCanny)
|
|
cv2.createTrackbar('threshold1', windowName, 0, 255, on_change1)
|
|
cv2.createTrackbar('threshold2', windowName, 0, 255, on_change2)
|
|
|
|
cv2.waitKey(0)
|
|
cv2.destroyAllWindows() |