質問編集履歴
2
更新
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
プログラム更新
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
|
|