-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexpe6.py
64 lines (55 loc) · 2.43 KB
/
expe6.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import cv2
import numpy as np
image = cv2.imread('images/cartoon.jpeg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Original", image)
#--------------------<Erosion>--------------------#
eroded = ()
for i in range(0, 3):
_ = (cv2.erode(gray.copy(), None, iterations=i + 1), )
eroded += _
cv2.imshow("Eroded images ({})".format(len(eroded)), np.hstack(eroded))
#--------------------<Dilation>--------------------#
dilated = ()
for i in range(0, 3):
_ = (cv2.dilate(gray.copy(), None, iterations=i + 1),)
dilated += _
cv2.imshow("Dilated images ({})".format(len(dilated)), np.hstack(dilated))
#--------------------<Opening>--------------------#
kernelSizes = [(3, 3), (5, 5), (7, 7)]
openings = ()
# loop over the kernels sizes
for kernelSize in kernelSizes:
# construct a rectangular kernel from the current size and then
# apply an "opening" operation
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, kernelSize)
_ = (cv2.morphologyEx(gray, cv2.MORPH_OPEN, kernel),)
openings += _
cv2.imshow("Openings images ({})".format(kernelSizes), np.hstack(openings))
#--------------------<Closing>--------------------#
closings = ()
for kernelSize in kernelSizes:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, kernelSize)
_ = (cv2.morphologyEx(gray, cv2.MORPH_CLOSE, kernel),)
closings += _
cv2.imshow("Closing images ({})".format(kernelSizes), np.hstack(closings))
#--------------------<Morphological gradient>--------------------#
gradient = ()
for kernelSize in kernelSizes:
# construct a rectangular kernel and apply a "morphological
# gradient" operation to the image
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, kernelSize)
_ = (cv2.morphologyEx(gray, cv2.MORPH_GRADIENT, kernel),)
gradient += _
cv2.imshow("Morphological gradient ({})".format(kernelSizes), np.hstack(gradient))
#--------------------<Top hat/white hat and black hat>--------------------#
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# construct a rectangular kernel (13x5) and apply a blackhat
# operation which enables us to find dark regions on a light
# background
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (13, 5))
blackhat = cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, rectKernel)
tophat = cv2.morphologyEx(gray, cv2.MORPH_TOPHAT, rectKernel)
cv2.imshow("Black Hat\t\t\tTop Hat", np.hstack((blackhat, tophat)))
cv2.waitKey(0)
cv2.destroyAllWindows()