Add Java and Python code for morphology tutorials.
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
from __future__ import print_function
|
||||
import cv2 as cv
|
||||
import numpy as np
|
||||
import argparse
|
||||
|
||||
erosion_size = 0
|
||||
max_elem = 2
|
||||
max_kernel_size = 21
|
||||
title_trackbar_element_type = 'Element:\n 0: Rect \n 1: Cross \n 2: Ellipse'
|
||||
title_trackbar_kernel_size = 'Kernel size:\n 2n +1'
|
||||
title_erosion_window = 'Erosion Demo'
|
||||
title_dilatation_window = 'Dilation Demo'
|
||||
|
||||
def erosion(val):
|
||||
erosion_size = cv.getTrackbarPos(title_trackbar_kernel_size, title_erosion_window)
|
||||
erosion_type = 0
|
||||
val_type = cv.getTrackbarPos(title_trackbar_element_type, title_erosion_window)
|
||||
if val_type == 0:
|
||||
erosion_type = cv.MORPH_RECT
|
||||
elif val_type == 1:
|
||||
erosion_type = cv.MORPH_CROSS
|
||||
elif val_type == 2:
|
||||
erosion_type = cv.MORPH_ELLIPSE
|
||||
|
||||
element = cv.getStructuringElement(erosion_type, (2*erosion_size + 1, 2*erosion_size+1), (erosion_size, erosion_size))
|
||||
erosion_dst = cv.erode(src, element)
|
||||
cv.imshow(title_erosion_window, erosion_dst)
|
||||
|
||||
def dilatation(val):
|
||||
dilatation_size = cv.getTrackbarPos(title_trackbar_kernel_size, title_dilatation_window)
|
||||
dilatation_type = 0
|
||||
val_type = cv.getTrackbarPos(title_trackbar_element_type, title_dilatation_window)
|
||||
if val_type == 0:
|
||||
dilatation_type = cv.MORPH_RECT
|
||||
elif val_type == 1:
|
||||
dilatation_type = cv.MORPH_CROSS
|
||||
elif val_type == 2:
|
||||
dilatation_type = cv.MORPH_ELLIPSE
|
||||
|
||||
element = cv.getStructuringElement(dilatation_type, (2*dilatation_size + 1, 2*dilatation_size+1), (dilatation_size, dilatation_size))
|
||||
dilatation_dst = cv.dilate(src, element)
|
||||
cv.imshow(title_dilatation_window, dilatation_dst)
|
||||
|
||||
parser = argparse.ArgumentParser(description='Code for Eroding and Dilating tutorial.')
|
||||
parser.add_argument('--input', help='Path to input image.', default='../data/LinuxLogo.jpg')
|
||||
args = parser.parse_args()
|
||||
|
||||
src = cv.imread(args.input)
|
||||
if src is None:
|
||||
print('Could not open or find the image: ', args.input)
|
||||
exit(0)
|
||||
|
||||
cv.namedWindow(title_erosion_window)
|
||||
cv.createTrackbar(title_trackbar_element_type, title_erosion_window , 0, max_elem, erosion)
|
||||
cv.createTrackbar(title_trackbar_kernel_size, title_erosion_window , 0, max_kernel_size, erosion)
|
||||
|
||||
cv.namedWindow(title_dilatation_window)
|
||||
cv.createTrackbar(title_trackbar_element_type, title_dilatation_window , 0, max_elem, dilatation)
|
||||
cv.createTrackbar(title_trackbar_kernel_size, title_dilatation_window , 0, max_kernel_size, dilatation)
|
||||
|
||||
erosion(0)
|
||||
dilatation(0)
|
||||
cv.waitKey()
|
||||
@@ -0,0 +1,48 @@
|
||||
from __future__ import print_function
|
||||
import cv2 as cv
|
||||
import numpy as np
|
||||
import argparse
|
||||
|
||||
morph_size = 0
|
||||
max_operator = 4
|
||||
max_elem = 2
|
||||
max_kernel_size = 21
|
||||
title_trackbar_operator_type = 'Operator:\n 0: Opening - 1: Closing \n 2: Gradient - 3: Top Hat \n 4: Black Hat'
|
||||
title_trackbar_element_type = 'Element:\n 0: Rect - 1: Cross - 2: Ellipse'
|
||||
title_trackbar_kernel_size = 'Kernel size:\n 2n + 1'
|
||||
title_window = 'Morphology Transformations Demo'
|
||||
morph_op_dic = {0: cv.MORPH_OPEN, 1: cv.MORPH_CLOSE, 2: cv.MORPH_GRADIENT, 3: cv.MORPH_TOPHAT, 4: cv.MORPH_BLACKHAT}
|
||||
|
||||
def morphology_operations(val):
|
||||
morph_operator = cv.getTrackbarPos(title_trackbar_operator_type, title_window)
|
||||
morph_size = cv.getTrackbarPos(title_trackbar_kernel_size, title_window)
|
||||
morph_elem = 0
|
||||
val_type = cv.getTrackbarPos(title_trackbar_element_type, title_window)
|
||||
if val_type == 0:
|
||||
morph_elem = cv.MORPH_RECT
|
||||
elif val_type == 1:
|
||||
morph_elem = cv.MORPH_CROSS
|
||||
elif val_type == 2:
|
||||
morph_elem = cv.MORPH_ELLIPSE
|
||||
|
||||
element = cv.getStructuringElement(morph_elem, (2*morph_size + 1, 2*morph_size+1), (morph_size, morph_size))
|
||||
operation = morph_op_dic[morph_operator]
|
||||
dst = cv.morphologyEx(src, operation, element)
|
||||
cv.imshow(title_window, dst)
|
||||
|
||||
parser = argparse.ArgumentParser(description='Code for More Morphology Transformations tutorial.')
|
||||
parser.add_argument('--input', help='Path to input image.', default='../data/LinuxLogo.jpg')
|
||||
args = parser.parse_args()
|
||||
|
||||
src = cv.imread(args.input)
|
||||
if src is None:
|
||||
print('Could not open or find the image: ', args.input)
|
||||
exit(0)
|
||||
|
||||
cv.namedWindow(title_window)
|
||||
cv.createTrackbar(title_trackbar_operator_type, title_window , 0, max_operator, morphology_operations)
|
||||
cv.createTrackbar(title_trackbar_element_type, title_window , 0, max_elem, morphology_operations)
|
||||
cv.createTrackbar(title_trackbar_kernel_size, title_window , 0, max_kernel_size, morphology_operations)
|
||||
|
||||
morphology_operations(0)
|
||||
cv.waitKey()
|
||||
Reference in New Issue
Block a user