为什么OpenCV matchShape()将“ X”与“ N”匹配?

时间:2019-07-24 20:02:12

标签: python opencv

我正在比较字母的轮廓,并且有几种意外结果的情况。我最困惑的是如何将X和N识别为最佳匹配。

在以下图像中,黄色代表未知形状,蓝色代表候选形状。白色数字是cv.matchShapes使用CONTOURS_MATCH_I3返回的结果。 (我尝试了其他匹配方法,但得到的奇数结果相似,但字母不同。)

下面显示的X比N更好地匹配N

Results searching for best match for X

下面显示的N个匹配X比N个更好

Results searching for best match for N

帖子末尾是原始数据,下面是数据图表。

enter image description here

我无法提出旋转,缩放或倾斜来表明这是一种视觉幻觉。我并不是说matchShapes中存在问题,而是我对Hu瞬间的理解存在问题。

如果有人愿意花点时间(双关语)并解释cv.matchShapes是如何产生这些结果的,我将不胜感激。

---已编辑----

以下图像是使用多边形填充形状的结果。我仍然困惑于这些字母如何比正确的字母更好地匹配。

E and the best matches

enter image description here


target_letter   
33  23
32  24
30  24
28  26
28  30
29  31
29  32
31  34
31  35
33  37
33  38
36  41
36  42
38  44
38  47
35  50
35  51
33  53
33  54
30  57
30  58
28  60
28  61
27  62
27  67
29  69
34  69
38  65
38  64
40  62
40  61
42  59
42  58
46  54
47  54
49  56
49  57
51  59
51  60
53  62
53  63
56  66
56  67
58  69
63  69
65  67
65  60
63  58
63  57
60  54
60  53
58  51
58  50
55  47
55  44
57  42
57  41
61  37
61  36
64  33
64  32
65  31
65  25
64  24
62  24
61  23
60  24
58  24
55  27
55  28
52  31
52  32
50  34
50  35
47  38
45  36
45  35
41  31
41  30
40  29
40  28
38  26
38  25
37  24
35  24
34  23

candidateLetter  N
10  3
9   4
7   4
6   5
5   5
5   6
4   7
4   9
3   10
3   44
4   45
4   47
6   49
12  49
13  48
13  47
14  46
14  23
15  22
17  24
17  25
21  29
21  30
24  33
24  34
27  37
27  38
31  42
31  43
34  46
34  47
35  48
36  48
37  49
43  49
45  47
45  6
43  4
38  4
36  6
36  8
35  9
35  27
36  28
36  29
34  31
33  30
33  29
31  27
31  26
27  22
27  21
24  18
24  17
21  14
21  13
18  10
18  9
13  4
11  4


candidateLetter X
10  2
9   3
7   3
6   4
6   6
5   7
5   8
6   9
6   11
8   13
8   14
10  16
10  17
14  21
14  22
16  24
16  25
13  28
13  29
10  32
10  33
7   36
7   37
5   39
5   40
4   41
4   46
6   48
11  48
15  44
15  43
17  41
17  40
19  38
19  37
21  35
21  34
23  32
26  35
26  36
28  38
28  39
30  41
30  42
33  45
33  46
35  48
40  48
42  46
42  39
40  37
40  36
37  33
37  32
34  29
34  28
32  26
32  23
34  21
34  20
37  17
37  16
41  12
41  11
42  10
42  4
41  3
39  3
38  2
37  3
35  3
32  6
32  7
29  10
29  11
27  13
27  14
24  17
21  14
21  13
18  10
18  9
17  8
17  7
15  5
15  4
14  3
12  3
11  2

0 个答案:

没有答案