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