回答編集履歴

2

日本語の修正2

2017/07/16 02:45

投稿

退会済みユーザー
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
- ちなみに私のところでは別のエラーが出ましたので、`if circles is not None:`としてしまいました。
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

日本語の修正

2017/07/16 02:45

投稿

退会済みユーザー
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
- (円を少緩めたの、if circles is not None:に変更たくらですので、実質同じコードだと思いすが…)
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