回答編集履歴
6
誤植修正
test
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
> {
|
60
60
|
|
61
|
-
> double delta = eps * ((std::min)(r1.width, r2.width) + (std::min)(r1.height,
|
61
|
+
> double delta = eps * ((std::min)(r1.width, r2.width) + (std::min)(r1.height, r2.height)) * 0.5;
|
62
62
|
|
63
63
|
> return std::abs(r1.x - r2.x) <= delta &&
|
64
64
|
|
5
import numpy as npをするように注意喚起
test
CHANGED
@@ -142,7 +142,7 @@
|
|
142
142
|
|
143
143
|
|
144
144
|
|
145
|
-
[こちら](https://stackoverflow.com/questions/21689804/grouprectangles-opencv-not-working)を参考にしました。
|
145
|
+
[こちら](https://stackoverflow.com/questions/21689804/grouprectangles-opencv-not-working)を参考にしました。事前に`import numpy as np`するのを忘れずに。
|
146
146
|
|
147
147
|
|
148
148
|
|
4
Pythonのテストコード追記
test
CHANGED
@@ -106,11 +106,11 @@
|
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
-
ですので、groupRectanglesを自ら呼び出すようなコードを書けば、パラメータ`eps`を指定できることになります。次のようにして、実際に実行することが出来ました。(ただし、再現環境はOpenCV3
|
109
|
+
ですので、groupRectanglesを自ら呼び出すようなコードを書けば、パラメータ`eps`を指定できることになります。次のようにして、実際に実行することが出来ました。(ただし、再現環境はOpenCV3)
|
110
110
|
|
111
|
-
|
111
|
+
```C++
|
112
112
|
|
113
|
-
|
113
|
+
cascade.detectMultiScale(smallImg, faces,
|
114
114
|
|
115
115
|
1.1, // scaleFactor
|
116
116
|
|
@@ -120,25 +120,29 @@
|
|
120
120
|
|
121
121
|
cv::Size(30, 30));
|
122
122
|
|
123
|
-
|
123
|
+
// 以下の値は自由
|
124
124
|
|
125
|
-
|
125
|
+
int groupThreshold = 3;
|
126
126
|
|
127
|
-
|
127
|
+
double eps = 0.5;
|
128
128
|
|
129
|
-
|
129
|
+
cv::groupRectangles(faces, gourpThreshold, eps);
|
130
130
|
|
131
|
-
|
131
|
+
```
|
132
132
|
|
133
133
|
|
134
134
|
|
135
|
-
|
135
|
+
```Python
|
136
136
|
|
137
|
-
|
137
|
+
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.04, minNeighbors=0, minSize=(80, 80), maxSize=(200, 200))
|
138
138
|
|
139
|
-
|
139
|
+
facerect, _ = cv2.groupRectangles(np.array(facerect).tolist(), groupThreshold=3, eps=0.5)
|
140
140
|
|
141
|
+
```
|
142
|
+
|
143
|
+
|
144
|
+
|
141
|
-
(
|
145
|
+
[こちら](https://stackoverflow.com/questions/21689804/grouprectangles-opencv-not-working)を参考にしました。
|
142
146
|
|
143
147
|
|
144
148
|
|
3
論理修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
- **minNeighborsについて**
|
4
4
|
|
5
|
-
『物体候補領域が何個以上重なっていたらそれを一つの物体として検出する』というイメージで大体あっていると思います。その重なり具合を指定するパラメータは存在します
|
5
|
+
『物体候補領域が何個以上重なっていたらそれを一つの物体として検出する』というイメージで大体あっていると思います。その重なり具合を指定するパラメータは存在します。詳しくは後述します。
|
6
6
|
|
7
7
|
|
8
8
|
|
@@ -106,7 +106,7 @@
|
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
-
ですので、groupRectanglesを自ら呼び出すようなコードを書けば、パラメータ`eps`を指定できることになります。次のようにして、実際に実行することが出来ました。(ただし、環境はOpenCV3.1)
|
109
|
+
ですので、groupRectanglesを自ら呼び出すようなコードを書けば、パラメータ`eps`を指定できることになります。次のようにして、実際に実行することが出来ました。(ただし、再現環境はOpenCV3.1)
|
110
110
|
|
111
111
|
> ```C++
|
112
112
|
|
@@ -138,6 +138,8 @@
|
|
138
138
|
|
139
139
|
うまくいきました!
|
140
140
|
|
141
|
+
(よく考えたら、これじゃ実行結果として不十分ですね... タイミングを見て追記します。)
|
142
|
+
|
141
143
|
|
142
144
|
|
143
145
|
---
|
2
成形
test
CHANGED
@@ -114,7 +114,7 @@
|
|
114
114
|
|
115
115
|
1.1, // scaleFactor
|
116
116
|
|
117
|
-
0, // minNeighbors(仮)
|
117
|
+
0, // minNeighbors(仮)
|
118
118
|
|
119
119
|
CV_HAAR_SCALE_IMAGE,
|
120
120
|
|
1
画像のアップ
test
CHANGED
@@ -134,6 +134,8 @@
|
|
134
134
|
|
135
135
|
そして、`groupThreshold`も、`eps`も0にしたときの実行結果がこちら。
|
136
136
|
|
137
|
+
![われらがレナ姐さん](71c836fd084b1ada99b4ed5dce2170be.jpeg)
|
138
|
+
|
137
139
|
うまくいきました!
|
138
140
|
|
139
141
|
|