Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit eac24bb

Browse files
committed
update ch17
1 parent faedc37 commit eac24bb

File tree

4 files changed

+112
-3
lines changed

4 files changed

+112
-3
lines changed

‎ch17-形态学转换/17.dilate.py‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# -*- coding: utf-8 -*-
2+
'''
3+
与腐 相反 与卷积核对应的原图像的像素值中只 有一个是 1 中心元 素的像素值就是 1。所以 个操作会增加图像中的白色区域 前景 。一般在去 噪声时先用腐 再用膨胀。因为腐 在去掉白噪声的同时 也会使前景对 变 小。所以我们再对他 膨胀。 时噪声已经 去 了 不会再回来了 但是 前景 在并会增加。膨胀也可以用来 接两个分开的物体。
4+
'''
5+
6+
import cv2
7+
import numpy as np
8+
9+
img = cv2.imread('j.png', 0)
10+
cv2.imshow('j.png', img)
11+
print(img.shape)
12+
13+
kernel = np.ones((5, 5), np.uint8)
14+
dilation = cv2.dilate(img, kernel, iterations=1)
15+
16+
cv2.imshow('dilation', dilation)
17+
cv2.moveWindow('dilation', x=img.shape[1], y=0)
18+
19+
cv2.waitKey(0)
20+
cv2.destroyAllWindows()

‎ch17-形态学转换/17.erode.py‎

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
11
# -*- coding: utf-8 -*-
2+
'''
3+
两个基本的形态学操作是腐 和膨胀。他们 的变体构成了开运算 ,闭运算, 梯度等。
4+
5+
根据卷积核的大小 前景的所有像素 会 腐 掉 变为 0 ,所以前景物体会变小 整幅图像的白色区域会减少。
6+
对于去除白噪声很有用 也可以用来断开两个 在一块的物体等。
7+
'''
28

39
import cv2
410
import numpy as np
5-
img = cv2.imread('j.png',0)
6-
kernel = np.ones((5,5),np.uint8)
7-
erosion = cv2.erode(img,kernel,iterations = 1)
11+
12+
img = cv2.imread('j.png', 0)
13+
cv2.imshow('j.png', img)
14+
print(img.shape)
15+
16+
kernel = np.ones((5, 5), np.uint8)
17+
erosion = cv2.erode(img, kernel, iterations=1)
18+
19+
cv2.imshow('erode', erosion)
20+
cv2.moveWindow('erode', x=img.shape[1], y=0)
21+
22+
cv2.waitKey(0)
23+
cv2.destroyAllWindows()

‎ch17-形态学转换/17.其他.py‎

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# -*- coding: utf-8 -*-
2+
3+
4+
import cv2
5+
import numpy as np
6+
7+
img = cv2.imread('j.png', 0)
8+
cv2.imshow('j.png', img)
9+
print(img.shape)
10+
11+
kernel = np.ones((5, 5), np.uint8)
12+
13+
# 开运算:先腐蚀再膨胀就叫做开运算。就像我们上 介绍的 样, 它 用来,去噪声。
14+
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
15+
16+
cv2.imshow('opening', opening)
17+
cv2.moveWindow('opening', x=img.shape[1], y=0)
18+
19+
# 闭运算
20+
# 先膨胀再腐 。它经常 用来填充前景物体中的小洞 或者前景物体上的小黑点。
21+
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
22+
cv2.imshow('closing', closing)
23+
cv2.moveWindow('closing', x=img.shape[1] * 2, y=0)
24+
25+
# 形态学梯度
26+
# 其实就是一幅图像膨胀与腐 的差别。
27+
# 结果看上去就像前景物体的 廓。
28+
gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
29+
cv2.imshow('gradient', gradient)
30+
cv2.moveWindow('gradient', x=img.shape[1] * 3, y=0)
31+
32+
# 礼帽
33+
# 原始图像与 开运算之后得到的图像的差。
34+
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
35+
cv2.imshow('tophat', tophat)
36+
cv2.moveWindow('tophat', x=img.shape[1] * 4, y=0)
37+
38+
# 黑帽 进行闭运算之后得到的图像与原始图像的差
39+
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
40+
cv2.imshow('blackhat', blackhat)
41+
cv2.moveWindow('blackhat', x=img.shape[1] * 5, y=0)
42+
43+
cv2.waitKey(0)
44+
cv2.destroyAllWindows()
45+
46+
'''
47+
结构化元素
48+
在前 的例子中我们使用 Numpy 构建了结构化元素 它是正方形的。
49+
但 有时我们 需要 构建一个椭圆形/圆形的核。
50+
为了实现 这种需求 ,提供了 OpenCV 函数 cv2.getStructuringElement()。
51+
你只 告诉 他 你需要的核的形状和大小。
52+
# Rectangular Kernel
53+
>>> cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))
54+
array([[1, 1, 1, 1, 1],
55+
[1, 1, 1, 1, 1],
56+
[1, 1, 1, 1, 1],
57+
[1, 1, 1, 1, 1],
58+
[1, 1, 1, 1, 1]], dtype=uint8)
59+
# Elliptical Kernel
60+
>>> cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
61+
array([[0, 0, 1, 0, 0],
62+
[1, 1, 1, 1, 1],
63+
[1, 1, 1, 1, 1],
64+
[1, 1, 1, 1, 1],
65+
[0, 0, 1, 0, 0]], dtype=uint8)
66+
# Cross-shaped Kernel
67+
>>> cv2.getStructuringElement(cv2.MORPH_CROSS,(5,5))
68+
array([[0, 0, 1, 0, 0],
69+
[0, 0, 1, 0, 0],
70+
[1, 1, 1, 1, 1],
71+
[0, 0, 1, 0, 0],
72+
[0, 0, 1, 0, 0]], dtype=uint8)
73+
'''

‎ch17-形态学转换/j.png‎

1.1 KB
Loading[フレーム]

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /