回答編集履歴
2
日本語の修正2
test
CHANGED
@@ -2,21 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
[こちら](http://qiita.com/northriver/items/d6b73da79a13bf3526e2)で円の検出関数について解説がついています。
|
5
|
+
恐らく、設定が厳しすぎて検出できていないのだと思います。[こちら](http://qiita.com/northriver/items/d6b73da79a13bf3526e2)で円の検出関数について解説がついていますので参照ください。
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
> dp ・・・ 処理するときに元画像の解像度を落として検出する場合は増やす。例えば、1だとそのままの画質で処理して、2だと1/2に縮小して処理するらしい。
|
10
|
-
|
11
|
-
minDist ・・・ 検出される円と円の最小距離
|
12
|
-
|
13
|
-
param1 ・・・ 「Cannyのエッジ検出器で用いる二つのしきい値の高い方」らしい。低いほどいろんなエッジを検出する
|
14
|
-
|
15
|
-
param2 ・・・ 中心検出計算時のしきい値。低いほど円じゃないものも検出する
|
16
|
-
|
17
|
-
minRadius ・・・ 最小半径
|
18
|
-
|
19
|
-
maxRadius ・・・ 最大半径
|
20
6
|
|
21
7
|
|
22
8
|
|
@@ -24,11 +10,13 @@
|
|
24
10
|
|
25
11
|
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=10, param2=85, minRadius=10, maxRadius=80)
|
26
12
|
|
13
|
+
|
14
|
+
|
27
15
|
***修正後の値**
|
28
16
|
|
29
17
|
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=30, param2=75, minRadius=10, maxRadius=300)
|
30
18
|
|
31
|
-
※手元にあった硬式テニスボールが検出されやすい程度に値をいじったものです。
|
19
|
+
※手元にあった硬式テニスボールが検出されやすい程度に値を緩くいじったものです。
|
32
20
|
|
33
21
|
|
34
22
|
|
@@ -39,6 +27,8 @@
|
|
39
27
|
設定を厳しくすればラグは減っていきますが、その分検出もされなくなると思います。
|
40
28
|
|
41
29
|
テストを進める過程で、円が検出され過ぎる設定にすると10秒以上待たされて大変なことになりました。
|
30
|
+
|
31
|
+
|
42
32
|
|
43
33
|
上記の設定であれば、ラグも検出精度もそれほどひどいことにはならないと思います。
|
44
34
|
|
@@ -60,7 +50,7 @@
|
|
60
50
|
|
61
51
|
|
62
52
|
|
63
|
-
ちなみに私のところでは別のエラー
|
53
|
+
ちなみに私のところでは別のエラー
|
64
54
|
|
65
55
|
> FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
|
66
56
|
|
@@ -68,7 +58,11 @@
|
|
68
58
|
|
69
59
|
|
70
60
|
|
61
|
+
が出ましたので、`if circles is not None:`としてしまいました。
|
62
|
+
|
63
|
+
|
64
|
+
|
71
|
-
以下動いたコードです。
|
65
|
+
以下、実際に動いたコードです。
|
72
66
|
|
73
67
|
|
74
68
|
|
1
日本語の修正
test
CHANGED
@@ -1,6 +1,76 @@
|
|
1
|
-
|
1
|
+
> 動画は読み込んで出力することができますが、円が出てきません。表示させるにはどうすればいいでしょうか?
|
2
2
|
|
3
|
+
|
4
|
+
|
5
|
+
[こちら](http://qiita.com/northriver/items/d6b73da79a13bf3526e2)で円の検出関数について解説がついています。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
> dp ・・・ 処理するときに元画像の解像度を落として検出する場合は増やす。例えば、1だとそのままの画質で処理して、2だと1/2に縮小して処理するらしい。
|
10
|
+
|
11
|
+
minDist ・・・ 検出される円と円の最小距離
|
12
|
+
|
13
|
+
param1 ・・・ 「Cannyのエッジ検出器で用いる二つのしきい値の高い方」らしい。低いほどいろんなエッジを検出する
|
14
|
+
|
15
|
+
param2 ・・・ 中心検出計算時のしきい値。低いほど円じゃないものも検出する
|
16
|
+
|
17
|
+
minRadius ・・・ 最小半径
|
18
|
+
|
19
|
+
maxRadius ・・・ 最大半径
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
***元の値**
|
24
|
+
|
25
|
+
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=10, param2=85, minRadius=10, maxRadius=80)
|
26
|
+
|
27
|
+
***修正後の値**
|
28
|
+
|
29
|
+
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1, 60, param1=30, param2=75, minRadius=10, maxRadius=300)
|
30
|
+
|
31
|
+
※手元にあった硬式テニスボールが検出されやすい程度に値をいじったものです。
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
> さらに円検出のコードを入れると普通に動画を表示させる時よりスローで再生されます。これはしょうがないことなのでしょうか?
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
設定を厳しくすればラグは減っていきますが、その分検出もされなくなると思います。
|
40
|
+
|
41
|
+
テストを進める過程で、円が検出され過ぎる設定にすると10秒以上待たされて大変なことになりました。
|
42
|
+
|
43
|
+
上記の設定であれば、ラグも検出精度もそれほどひどいことにはならないと思います。
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
> 'q'を押せば終了しますが何もせず動画の終了を待つと
|
48
|
+
|
49
|
+
File "fil.py", line 14, in <module>
|
50
|
+
|
51
|
+
if circles != None:
|
52
|
+
|
53
|
+
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
|
54
|
+
|
55
|
+
というエラーコードが出てきますがこれはどういうことでしょうか?
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
[こちら](http://nishidy.hatenablog.com/entry/2016/04/23/120519)に解説がありました。配列(array)の処理は.any()か.all()で処理してください、ということのようです。
|
60
|
+
|
61
|
+
|
62
|
+
|
3
|
-
|
63
|
+
ちなみに私のところでは別のエラーが出ましたので、`if circles is not None:`としてしまいました。
|
64
|
+
|
65
|
+
> FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
|
66
|
+
|
67
|
+
if circles != None:
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
以下動いたコードです。
|
72
|
+
|
73
|
+
|
4
74
|
|
5
75
|
```Python
|
6
76
|
|