質問編集履歴

4

実行できるように変更

2022/08/25 03:34

投稿

lix__
lix__

スコア5

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
- i = 0
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
- # 最初のフレームを背景画像に設定 ret, bg = cap.read()
18
+ ret, bg = cap.read()
19
+
20
+ # グレースケール変換
17
- # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
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
- if(i > 30): ret, bg = cap.read()
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
- break cap.release()
56
+ cap.release()
42
57
  cv2.destroyAllWindows()
43
58
  ```
44
59
 

3

プログラムの表記方法の変更

2022/08/25 03:22

投稿

lix__
lix__

スコア5

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

プログラムが読みづらいため更新

2022/08/25 03:21

投稿

lix__
lix__

スコア5

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
- import numpy as np
8
+ import numpy as np
8
- import time
9
+ import time
9
- i = 0
10
+ i = 0
10
- # カウント変数
11
+ # カウント変数
11
- th = 30
12
+ th = 30
12
- # 差分画像の閾値
13
+ # 差分画像の閾値
13
- # 動画ファイルのキャプチャ
14
+ # 動画ファイルのキャプチャ
14
- cap = cv2.VideoCapture("zverev1.mp4")
15
+ cap = cv2.VideoCapture("zverev1.mp4")
15
- # 最初のフレームを背景画像に設定 ret, bg = cap.read()
16
+ # 最初のフレームを背景画像に設定 ret, bg = cap.read()
16
- # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
17
+ # グレースケール変換 bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
17
- while(cap.isOpened()):
18
+ while(cap.isOpened()):
18
- # フレームの取得
19
+ # フレームの取得
19
- ret, frame = cap.read()
20
+ ret, frame = cap.read()
20
- # グレースケール変換
21
+ # グレースケール変換
21
- gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
22
+ gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
22
- # 差分の絶対値を計算
23
+ # 差分の絶対値を計算
23
- mask = cv2.absdiff(gray, bg)
24
+ mask = cv2.absdiff(gray, bg)
24
- # 差分画像を二値化してマスク画像を算出
25
+ # 差分画像を二値化してマスク画像を算出
25
- mask[mask < th] = 0
26
+ mask[mask < th] = 0
26
- mask[mask >= th] = 255
27
+ mask[mask >= th] = 255
27
- # フレームとマスク画像を表示
28
+ # フレームとマスク画像を表示
28
- cv2.imshow("Mask", mask)
29
+ cv2.imshow("Mask", mask)
29
- cv2.imshow("Flame", gray)
30
+ cv2.imshow("Flame", gray)
30
- cv2.imshow("Background", bg)
31
+ cv2.imshow("Background", bg)
31
- # 待機(0.03sec)
32
+ # 待機(0.03sec)
32
- time.sleep(0.03)
33
+ time.sleep(0.03)
33
- i += 1 # カウントを1増やす
34
+ i += 1 # カウントを1増やす
34
- # 背景画像の更新(一定間隔)
35
+ # 背景画像の更新(一定間隔)
35
- if(i > 30): ret, bg = cap.read()
36
+ if(i > 30): ret, bg = cap.read()
36
- bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
37
+ bg = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
37
- i = 0
38
+ i = 0
38
- # カウント変数の初期化
39
+ # カウント変数の初期化
39
- if cv2.waitKey(1) & 0xFF == ord('q'):
40
+ if cv2.waitKey(1) & 0xFF == ord('q'):
40
- break cap.release()
41
+ break cap.release()
41
- cv2.destroyAllWindows()
42
+ cv2.destroyAllWindows()
42
43
 
43
44
 

1

出来ているとこまでのコードの追加

2022/08/25 02:12

投稿

lix__
lix__

スコア5

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