質問編集履歴
4
実行できるように変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,38 +7,53 @@
|
|
7
7
|
import cv2
|
8
8
|
import numpy as np
|
9
9
|
import time
|
10
|
-
|
10
|
+
|
11
|
-
# カウント変数
|
11
|
+
i = 0 # カウント変数
|
12
|
-
th = 30
|
13
|
-
# 差分画像の閾値
|
12
|
+
th = 30 # 差分画像の閾値
|
13
|
+
|
14
14
|
# 動画ファイルのキャプチャ
|
15
15
|
cap = cv2.VideoCapture("zverev1.mp4")
|
16
|
+
|
17
|
+
# 最初のフレームを背景画像に設定
|
16
|
-
|
18
|
+
ret, bg = cap.read()
|
19
|
+
|
20
|
+
# グレースケール変換
|
17
|
-
|
21
|
+
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
22
|
+
|
18
23
|
while(cap.isOpened()):
|
19
|
-
# フレームの取得
|
24
|
+
# フレームの取得
|
20
|
-
ret, frame = cap.read()
|
25
|
+
ret, frame = cap.read()
|
26
|
+
|
21
|
-
# グレースケール変換
|
27
|
+
# グレースケール変換
|
22
|
-
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
28
|
+
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
29
|
+
|
23
|
-
# 差分の絶対値を計算
|
30
|
+
# 差分の絶対値を計算
|
24
|
-
mask = cv2.absdiff(gray, bg)
|
31
|
+
mask = cv2.absdiff(gray, bg)
|
32
|
+
|
25
|
-
# 差分画像を二値化してマスク画像を算出
|
33
|
+
# 差分画像を二値化してマスク画像を算出
|
26
|
-
mask[mask < th] = 0
|
34
|
+
mask[mask < th] = 0
|
27
|
-
mask[mask >= th] = 255
|
35
|
+
mask[mask >= th] = 255
|
36
|
+
|
28
|
-
# フレームとマスク画像を表示
|
37
|
+
# フレームとマスク画像を表示
|
29
|
-
cv2.imshow("Mask", mask)
|
38
|
+
cv2.imshow("Mask", mask)
|
30
|
-
cv2.imshow("Flame", gray)
|
39
|
+
cv2.imshow("Flame", gray)
|
31
|
-
cv2.imshow("Background", bg)
|
40
|
+
cv2.imshow("Background", bg)
|
41
|
+
|
32
|
-
# 待機(0.03sec)
|
42
|
+
# 待機(0.03sec)
|
33
|
-
time.sleep(0.03)
|
43
|
+
time.sleep(0.03)
|
34
|
-
i += 1 # カウントを1増やす
|
44
|
+
i += 1 # カウントを1増やす
|
45
|
+
|
35
|
-
# 背景画像の更新(一定間隔)
|
46
|
+
# 背景画像の更新(一定間隔)
|
47
|
+
if(i > 30):
|
36
|
-
|
48
|
+
ret, bg = cap.read()
|
37
|
-
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
49
|
+
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
38
|
-
i = 0
|
39
|
-
# カウント変数の初期化
|
50
|
+
i = 0 # カウント変数の初期化
|
51
|
+
|
52
|
+
# qキーが押されたら途中終了
|
40
|
-
if cv2.waitKey(1) & 0xFF == ord('q'):
|
53
|
+
if cv2.waitKey(1) & 0xFF == ord('q'):
|
54
|
+
break
|
55
|
+
|
41
|
-
|
56
|
+
cap.release()
|
42
57
|
cv2.destroyAllWindows()
|
43
58
|
```
|
44
59
|
|
3
プログラムの表記方法の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
実行環境
|
4
4
|
jupyter python
|
5
5
|
フレーム差分による物体検出を行うコードは以下になります
|
6
|
-
python
|
6
|
+
```python
|
7
7
|
import cv2
|
8
8
|
import numpy as np
|
9
9
|
import time
|
@@ -40,5 +40,5 @@
|
|
40
40
|
if cv2.waitKey(1) & 0xFF == ord('q'):
|
41
41
|
break cap.release()
|
42
42
|
cv2.destroyAllWindows()
|
43
|
+
```
|
43
44
|
|
44
|
-
|
2
プログラムが読みづらいため更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -3,41 +3,42 @@
|
|
3
3
|
実行環境
|
4
4
|
jupyter python
|
5
5
|
フレーム差分による物体検出を行うコードは以下になります
|
6
|
+
python
|
6
7
|
import cv2
|
7
|
-
|
8
|
+
import numpy as np
|
8
|
-
|
9
|
+
import time
|
9
|
-
|
10
|
+
i = 0
|
10
|
-
|
11
|
+
# カウント変数
|
11
|
-
|
12
|
+
th = 30
|
12
|
-
|
13
|
+
# 差分画像の閾値
|
13
|
-
|
14
|
+
# 動画ファイルのキャプチャ
|
14
|
-
|
15
|
+
cap = cv2.VideoCapture("zverev1.mp4")
|
15
|
-
|
16
|
+
# 最初のフレームを背景画像に設定 ret, bg = cap.read()
|
16
|
-
|
17
|
+
# グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
17
|
-
|
18
|
+
while(cap.isOpened()):
|
18
|
-
|
19
|
+
# フレームの取得
|
19
|
-
|
20
|
+
ret, frame = cap.read()
|
20
|
-
|
21
|
+
# グレースケール変換
|
21
|
-
|
22
|
+
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
22
|
-
|
23
|
+
# 差分の絶対値を計算
|
23
|
-
|
24
|
+
mask = cv2.absdiff(gray, bg)
|
24
|
-
|
25
|
+
# 差分画像を二値化してマスク画像を算出
|
25
|
-
|
26
|
+
mask[mask < th] = 0
|
26
|
-
|
27
|
+
mask[mask >= th] = 255
|
27
|
-
|
28
|
+
# フレームとマスク画像を表示
|
28
|
-
|
29
|
+
cv2.imshow("Mask", mask)
|
29
|
-
|
30
|
+
cv2.imshow("Flame", gray)
|
30
|
-
|
31
|
+
cv2.imshow("Background", bg)
|
31
|
-
|
32
|
+
# 待機(0.03sec)
|
32
|
-
|
33
|
+
time.sleep(0.03)
|
33
|
-
|
34
|
+
i += 1 # カウントを1増やす
|
34
|
-
|
35
|
+
# 背景画像の更新(一定間隔)
|
35
|
-
|
36
|
+
if(i > 30): ret, bg = cap.read()
|
36
|
-
|
37
|
+
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
37
|
-
|
38
|
+
i = 0
|
38
|
-
|
39
|
+
# カウント変数の初期化
|
39
|
-
|
40
|
+
if cv2.waitKey(1) & 0xFF == ord('q'):
|
40
|
-
|
41
|
+
break cap.release()
|
41
|
-
|
42
|
+
cv2.destroyAllWindows()
|
42
43
|
|
43
44
|
|
1
出来ているとこまでのコードの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,5 +2,42 @@
|
|
2
2
|
当方python初心者なためお力添いをおねがいします。
|
3
3
|
実行環境
|
4
4
|
jupyter python
|
5
|
+
フレーム差分による物体検出を行うコードは以下になります
|
6
|
+
import cv2
|
7
|
+
import numpy as np
|
8
|
+
import time
|
9
|
+
i = 0
|
10
|
+
# カウント変数
|
11
|
+
th = 30
|
12
|
+
# 差分画像の閾値
|
13
|
+
# 動画ファイルのキャプチャ
|
14
|
+
cap = cv2.VideoCapture("zverev1.mp4")
|
15
|
+
# 最初のフレームを背景画像に設定 ret, bg = cap.read()
|
16
|
+
# グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
17
|
+
while(cap.isOpened()):
|
18
|
+
# フレームの取得
|
19
|
+
ret, frame = cap.read()
|
20
|
+
# グレースケール変換
|
21
|
+
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
|
22
|
+
# 差分の絶対値を計算
|
23
|
+
mask = cv2.absdiff(gray, bg)
|
24
|
+
# 差分画像を二値化してマスク画像を算出
|
25
|
+
mask[mask < th] = 0
|
26
|
+
mask[mask >= th] = 255
|
27
|
+
# フレームとマスク画像を表示
|
28
|
+
cv2.imshow("Mask", mask)
|
29
|
+
cv2.imshow("Flame", gray)
|
30
|
+
cv2.imshow("Background", bg)
|
31
|
+
# 待機(0.03sec)
|
32
|
+
time.sleep(0.03)
|
33
|
+
i += 1 # カウントを1増やす
|
34
|
+
# 背景画像の更新(一定間隔)
|
35
|
+
if(i > 30): ret, bg = cap.read()
|
36
|
+
bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
|
37
|
+
i = 0
|
38
|
+
# カウント変数の初期化
|
39
|
+
if cv2.waitKey(1) & 0xFF == ord('q'):
|
40
|
+
break cap.release()
|
41
|
+
cv2.destroyAllWindows()
|
5
42
|
|
6
43
|
|