質問編集履歴

1

ソースコードの変更、画像、エラーコードの追加

2021/11/24 04:38

投稿

shktech
shktech

スコア2

test CHANGED
File without changes
test CHANGED
@@ -7,6 +7,40 @@
7
7
  動画開始から30フレーム程度は背景画像と全く同じ画像となってしまう(複数動画の処理、背景画像と全く同じ画像となるフレームが一定ではない)ため、その後の処理(重心検出)が通りません。
8
8
 
9
9
  背景差分後の画像に物体が映ったときのフレーム以降でその後の処理を行わせる、何フレーム目から物体が映っているのかを調べるためには、どのような方法があるのかご教示いただきたく存じます。
10
+
11
+
12
+
13
+ ###追記
14
+
15
+ 該当ソースコードの修正、画像、エラーコードを追加しました。
16
+
17
+ 画像は
18
+
19
+ 一枚目 背景画像とする画像
20
+
21
+ 二枚目 物体の映った画像(26フレーム目)
22
+
23
+ 三枚目 物体が映っていないときの背景差分後の画像
24
+
25
+ 四枚目 物体が映ったときの背景差分後の画像(26フレーム目)
26
+
27
+ となっています。
28
+
29
+
30
+
31
+ 改めて、解決したい課題は
32
+
33
+ 物体が映ったフレーム以降から重心検出の処理を行わせたい
34
+
35
+ というものです。
36
+
37
+
38
+
39
+ 私の解釈では、三枚目の画像のようなときは重心検出ができなくてエラーになっているので(そもそもここが間違っていますか?)、物体の映った四枚目のような画像から重心検出を行うことができれば問題なく実行できると考えています。
40
+
41
+ 物体の映った画像以降から処理を行うためにはどのような手段があるのかを探しています。
42
+
43
+ ちなみに重心検出を行う理由は物体の座標を取得するためです。
10
44
 
11
45
 
12
46
 
@@ -20,9 +54,13 @@
20
54
 
21
55
  import numpy as np
22
56
 
57
+ import glob
58
+
59
+ import os
23
60
 
24
61
 
62
+
25
- video_path='*.mp4'
63
+ video_path='C2278.mp4'
26
64
 
27
65
 
28
66
 
@@ -90,6 +128,22 @@
90
128
 
91
129
  cv2.imwrite('threshold'+str(n).zfill(digit)+'.png',th)
92
130
 
131
+
132
+
133
+ #モーメント関数で3次までのモーメントを取得
134
+
135
+ mu=cv2.moments(th)
136
+
137
+
138
+
139
+ #図心を出す。
140
+
141
+ x,y= int(mu["m10"]/mu["m00"]) , int(mu["m01"]/mu["m00"])
142
+
143
+ print([x,y])
144
+
145
+
146
+
93
147
  else:
94
148
 
95
149
  # フレーム画像が読込なかったら終了
@@ -103,3 +157,41 @@
103
157
  cap.release()
104
158
 
105
159
  ```
160
+
161
+ ###エラーコード
162
+
163
+ ```
164
+
165
+ ---------------------------------------------------------------------------
166
+
167
+ ZeroDivisionError Traceback (most recent call last)
168
+
169
+ <ipython-input-4-a8ed6c71b0f4> in <module>
170
+
171
+ 44
172
+
173
+ 45 #図心を出す。
174
+
175
+ ---> 46 x,y= int(mu["m10"]/mu["m00"]) , int(mu["m01"]/mu["m00"])
176
+
177
+ 47 print([x,y])
178
+
179
+ 48 else:
180
+
181
+
182
+
183
+ ZeroDivisionError: float division by zero
184
+
185
+ ```
186
+
187
+
188
+
189
+ ###画像
190
+
191
+ ![イメージ説明](ce2343613a856e2773e2cc738621c184.png)
192
+
193
+ ![イメージ説明](d9ef9ea3fc8b6af14c7ab8420a089528.png)
194
+
195
+ ![イメージ説明](7ab82fa6b15f6d3ce5045bde323b646f.png)
196
+
197
+ ![イメージ説明](1851f2bb9d8115df463ec06595194c66.png)