回答編集履歴

2

d

2019/06/27 07:39

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -112,6 +112,10 @@
112
112
 
113
113
 
114
114
 
115
+ ---
116
+
117
+
118
+
115
119
  ![イメージ説明](d79e7dbcbc3e6f24be12e667f350b3a5.png)
116
120
 
117
121
 

1

d

2019/06/27 07:39

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -49,3 +49,71 @@
49
49
  # (array([], dtype=int64), array([], dtype=int64))
50
50
 
51
51
  ```
52
+
53
+
54
+
55
+ ## 追記
56
+
57
+
58
+
59
+ ```python
60
+
61
+ import cv2
62
+
63
+ import numpy as np
64
+
65
+
66
+
67
+ template = cv2.imread("marker.jpg", cv2.IMREAD_GRAYSCALE) # テンプレート画像
68
+
69
+ img = cv2.imread("sample.jpg", cv2.IMREAD_GRAYSCALE) # 検出対象画像
70
+
71
+
72
+
73
+ # テンプレートマッチングを行う。
74
+
75
+ ret = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
76
+
77
+
78
+
79
+ # 類似度が閾値以上の箇所を調べる。
80
+
81
+ threshold = 0.8
82
+
83
+ tl_Y, tl_X = np.where(ret >= threshold)
84
+
85
+
86
+
87
+ h, w = template.shape[:2] # テンプレート画像の大きさ
88
+
89
+ br_X, br_Y = tl_X + w, tl_Y + h # 検出枠の右下の座標
90
+
91
+
92
+
93
+ # すべての検出箇所の外接矩形で切り出す。
94
+
95
+ cropped = img[tl_X.min() : br_Y.max(), tl_X.min() : br_X.max()]
96
+
97
+
98
+
99
+ # 切り出した画像を保存する。
100
+
101
+ cv2.imwrite("results.png", cropped)
102
+
103
+ ```
104
+
105
+
106
+
107
+ ![イメージ説明](3b121058ab8ac5a97e7b8ef8f7782cf4.jpeg)
108
+
109
+
110
+
111
+ 検出に使用したテンプレート画像
112
+
113
+
114
+
115
+ ![イメージ説明](d79e7dbcbc3e6f24be12e667f350b3a5.png)
116
+
117
+
118
+
119
+ 切り出し結果