回答編集履歴
3
コード修正
test
CHANGED
@@ -20,23 +20,23 @@
|
|
20
20
|
|
21
21
|
def contains_lines(rect, lines):
|
22
22
|
|
23
|
-
"""長方形 rect が線 lines を1本でも含むかどうか
|
24
23
|
|
24
|
+
|
25
|
-
|
25
|
+
cnt = 0
|
26
26
|
|
27
27
|
for line in lines:
|
28
28
|
|
29
|
-
|
29
|
+
p1, p2 = tuple(line[:2]), tuple(line[2:])
|
30
30
|
|
31
|
-
|
31
|
+
if cv2.pointPolygonTest(rect, p1, False) >= 0 and \
|
32
32
|
|
33
|
-
|
33
|
+
cv2.pointPolygonTest(rect, p2, False) >= 0:
|
34
34
|
|
35
|
-
|
35
|
+
cnt += 1 # 線が長方形内に含まれる場合
|
36
36
|
|
37
|
+
print('cnt', cnt) # cnt 8
|
37
38
|
|
38
|
-
|
39
|
-
return
|
39
|
+
return cnt == 2 # 2本だけ含まれる場合
|
40
40
|
|
41
41
|
|
42
42
|
|
@@ -82,11 +82,11 @@
|
|
82
82
|
|
83
83
|
area = cv2.contourArea(cnt)
|
84
84
|
|
85
|
-
if
|
85
|
+
if not 500 < area < 5000:
|
86
86
|
|
87
87
|
continue # 面積が小さすぎるまたは大きすぎる場合
|
88
88
|
|
89
|
-
|
89
|
+
|
90
90
|
|
91
91
|
rotated_rect = cv2.minAreaRect(cnt)
|
92
92
|
|
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
min_edge = min(width, height) # 短辺
|
104
104
|
|
105
|
-
if
|
105
|
+
if not 5 < min_edge < 25:
|
106
106
|
|
107
107
|
continue # 長方形の短辺が短すぎるまたはすぎる場合
|
108
108
|
|
2
コードを修正
test
CHANGED
@@ -16,20 +16,6 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
def within(line, rect):
|
20
|
-
|
21
|
-
"""長方形 rect が線 line を含むかどうか
|
22
|
-
|
23
|
-
"""
|
24
|
-
|
25
|
-
p1, p2 = tuple(line[:2]), tuple(line[2:])
|
26
|
-
|
27
|
-
return cv2.pointPolygonTest(rect, p1, False) >= 0 and \
|
28
|
-
|
29
|
-
cv2.pointPolygonTest(rect, p2, False) >= 0
|
30
|
-
|
31
|
-
|
32
|
-
|
33
19
|
|
34
20
|
|
35
21
|
def contains_lines(rect, lines):
|
@@ -42,7 +28,9 @@
|
|
42
28
|
|
43
29
|
p1, p2 = tuple(line[:2]), tuple(line[2:])
|
44
30
|
|
31
|
+
if cv2.pointPolygonTest(rect, p1, False) >= 0 and \
|
32
|
+
|
45
|
-
|
33
|
+
cv2.pointPolygonTest(rect, p2, False) >= 0:
|
46
34
|
|
47
35
|
return True
|
48
36
|
|
@@ -53,10 +41,6 @@
|
|
53
41
|
|
54
42
|
|
55
43
|
def detect(img):
|
56
|
-
|
57
|
-
"""条件を満たす長方形一覧を返す。
|
58
|
-
|
59
|
-
"""
|
60
44
|
|
61
45
|
dst = [] # 線を1本でも含む長方形一覧
|
62
46
|
|
1
数式を修正
test
CHANGED
@@ -166,7 +166,7 @@
|
|
166
166
|
|
167
167
|
この部分の意図は長方形の短辺が短すぎたり、長過ぎたりしたものを除くという意図だと理解していますが、
|
168
168
|
|
169
|
-
ピタゴラスの定理より対角線が長方形の幅、高さより、短いということはありえないので、対角線を考慮する必要性はないと思います。(w^2 < w^2 + h^2, h^2 < w^2 + h^2 より)
|
169
|
+
ピタゴラスの定理より対角線が長方形の幅、高さより、短いということはありえないので、対角線を考慮する必要性はないと思います。(w^2 <= w^2 + h^2, h^2 <= w^2 + h^2 より)
|
170
170
|
|
171
171
|
|
172
172
|
|