質問編集履歴

2

更新

2020/04/17 07:16

投稿

raspypy
raspypy

スコア247

test CHANGED
@@ -1 +1 @@
1
- OpenCV 動画撮影時間の調整方法について
1
+ OpenCV 動画撮影時間
test CHANGED
@@ -1,101 +1,11 @@
1
1
  ##やろうとしていること
2
2
 
3
3
  OpenCV + Wevbカメラを使用して動画を撮影。
4
-
5
- 動画撮影中にデータを監視
6
-
7
- データの異常を検知したら、別のファイル名で動画ファイルを保存
8
-
9
- データの異常を検知しなければ、上書き保存を繰り返す。
10
4
 
11
5
 
12
6
 
13
7
  ##困っていること
14
8
 
15
- ↓のプログラムで動画を撮影していますが。
16
-
17
9
  撮影された動画を確認すると、実際の時間より早く撮影されています。(早送りのような動画)
18
10
 
19
11
  実際の時間と同じ時間で撮影する方法が分かりません。
20
-
21
-
22
-
23
- 例えば、fps=25で1秒撮影したい場合は、次のようなプログラムで撮影できますが、
24
-
25
- **やりたいこと**で説明したように、撮影中にデータの判定を含めてしまうと、このような書き方(for文で決まった数だけ撮影)ができないので、困っています。
26
-
27
-
28
-
29
- ```python
30
-
31
- for start in range(25):
32
-
33
- ret, frame = cap.read()
34
-
35
- writer.write(frame)
36
-
37
- sleep(0.04) #1/25sec
38
-
39
- ```
40
-
41
-
42
-
43
- ##プログラムコード
44
-
45
- ```python
46
-
47
- def movie():
48
-
49
- cap = cv2.VideoCapture(0)
50
-
51
- width = 640
52
-
53
- height = 480
54
-
55
- fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v') # ファイル形式(ここではmp4)
56
-
57
- writer = cv2.VideoWriter('/home/pi/dev/data/test.mp4', fmt ,25, (width, height))
58
-
59
-
60
-
61
- start_time = datetime.now()
62
-
63
-
64
-
65
- while True:
66
-
67
- ret, frame = cap.read()
68
-
69
- writer.write(frame)
70
-
71
-
72
-
73
- end_time = datetime.now()
74
-
75
- diff = end_time - start_time
76
-
77
- print (diff)
78
-
79
-
80
-
81
- #データ監視
82
-
83
- read_temp()
84
-
85
- tmax = eline.iloc[0][5]
86
-
87
-
88
-
89
- if(tmax >= Judge):
90
-
91
- now = datetime.now()
92
-
93
- filename = '/home/pi/dev/data/' + now.strftime('%Y%m%d_%H%M%S') + '.mp4'
94
-
95
- shutil.copy ('/home/pi/dev/data/test.mp4',filename)
96
-
97
- break
98
-
99
- cap.release()
100
-
101
- ```

1

プログラム更新

2020/04/17 07:16

投稿

raspypy
raspypy

スコア247

test CHANGED
File without changes
test CHANGED
@@ -56,13 +56,25 @@
56
56
 
57
57
  writer = cv2.VideoWriter('/home/pi/dev/data/test.mp4', fmt ,25, (width, height))
58
58
 
59
+
60
+
59
-
61
+ start_time = datetime.now()
62
+
63
+
60
64
 
61
65
  while True:
62
66
 
63
67
  ret, frame = cap.read()
64
68
 
65
69
  writer.write(frame)
70
+
71
+
72
+
73
+ end_time = datetime.now()
74
+
75
+ diff = end_time - start_time
76
+
77
+ print (diff)
66
78
 
67
79
 
68
80