forked from makelove/OpenCV-Python-Tutorial
-
Notifications
You must be signed in to change notification settings - Fork 0
/
轮廓的层次结构.txt
54 lines (43 loc) · 2.43 KB
/
轮廓的层次结构.txt
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
在前 的内容中我们使用函数 cv2.findContours 来查找 廓 我们 传入一个参数 廓提取模式 Contour_Retrieval_Mode 。我们总是 把它 置为 cv2.RETR_LIST 或者是 cv2.RETR_TREE 效果 可以
常我们使用函数 cv2.findContours 在图片中查找一个对 。有时对 可能位于不同的位置。 有些情况 一个形状在另外一个形状的内 。 种 情况下我们称外 的形状为父 内 的形状为子。按照 种方式分类 一幅图 像中的所有 廓之 就建立父子关系。 样我们就可以确定一个 廓与其他 廓是怎样 接的 比如它是不是某个 廓的子 廓 或者是父 廓。 种关系 就成为组织结构
每一个 廓 包含自己的信息 是父 是子等。OpenCV 使用一个含有四个元素的数组 示。
[Next Previous First_Child Parent]。
如果没有父或子 就为 -1。
21.5.3 廓检索模式
RETR_LIST 从 的 度来看 中应是最简单的。它只是提取所有的 廓 而不去创建任何父子关系。换句 就是 人人平等 它们属于同一级组 织 廓。
>>> hierarchy
array([[[ 1, -1, -1, -1],
[2, 0,-1,-1],
[3, 1,-1,-1],
[4, 2,-1,-1],
[5, 3,-1,-1],
[6, 4,-1,-1],
[7, 5,-1,-1],
[-1, 6, -1, -1]]])
RETR_EXTERNAL 如果你 择 种模式的 只会 回最外 的的 廓 所有的子 廓 会 忽略掉。
>>> hierarchy
array([[[ 1, -1, -1, -1],
[ 2, 0, -1, -1],
[-1, 1, -1, -1]]])
RETR_CCOMP 在 种模式下会 回所有的 廓并将 廓分为两级组织结 构。例如 一个对 的外 廓为第 1 级组织结构。而对 内 中空洞的 廓为 第 2 级组织结构 空洞中的任何对 的 廓又是第 1 级组织结构。空洞的组织 结构为第 2 级。
>>> hierarchy
array([[[ 3, -1, 1, -1],
[ 2, -1, -1, 0],
[-1, 1, -1, 0],
[ 5, 0, 4, -1],
[-1, -1, -1, 3],
[ 7, 3, 6, -1],
[-1, -1, -1, 5],
[ 8, 5, -1, -1],
[-1, 7, -1, -1]]])
RETR_TREE 终于到最后一个了 也是最完美的一个。 种模式下会 回 所有 廓 并且创建一个完整的组织结构列 。它甚至会告 你 是爷爷 爸 爸 儿子 孙子等。
>>> hierarchy
array([[[ 7, -1, 1, -1],
[-1, -1, 2, 0],
[-1, -1, 3, 1],
[-1, -1, 4, 2],
[-1, -1, 5, 3],
[ 6, -1, -1, 4],
[-1, 5, -1, 4],
[ 8, 0, -1, -1],
[-1, 7, -1, -1]]])