回答編集履歴

2

コードの修正

2022/01/09 19:20

投稿

kyokio
kyokio

スコア560

test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  # fps*time = sec
54
54
 
55
- if fps*time == backup_time:
55
+ if time >= backup_time*fps:
56
56
 
57
57
  back_up.release()
58
58
 
@@ -104,4 +104,6 @@
104
104
 
105
105
 
106
106
 
107
+
108
+
107
109
  ```

1

質問への回答

2022/01/09 19:20

投稿

kyokio
kyokio

スコア560

test CHANGED
@@ -1 +1,107 @@
1
1
  コードがないので具体的な方法を提案できませんが、ループを抜けずに`time`などを使用してループの中で10分経ったら保存する方がいいのではでしょうか?
2
+
3
+
4
+
5
+ 追記
6
+
7
+ とりあえず10秒で書いてみました。
8
+
9
+ 若干のずれはありますが、約10秒でファイル名を日時にして保存できると思います。
10
+
11
+ ```python
12
+
13
+ import datetime
14
+
15
+ import cv2
16
+
17
+
18
+
19
+ cap = cv2.VideoCapture(0)
20
+
21
+
22
+
23
+ # 保存
24
+
25
+ fmt = cv2.VideoWriter_fourcc('m', 'p', '4', 'v')
26
+
27
+ fps = 20.0
28
+
29
+ size = (640, 360)
30
+
31
+ writer = cv2.VideoWriter('outtest.m4v', fmt, fps, size)
32
+
33
+
34
+
35
+ backup_time = 10 # sec
36
+
37
+ time = 0 # init
38
+
39
+
40
+
41
+ # backup model
42
+
43
+ now = datetime.datetime.now()
44
+
45
+ s_now = now.strftime('%Y-%m-%d-%H-%M-%S')
46
+
47
+ back_up = cv2.VideoWriter(f'{s_now}.m4v', fmt, fps, size)
48
+
49
+
50
+
51
+ while True:
52
+
53
+ # fps*time = sec
54
+
55
+ if fps*time == backup_time:
56
+
57
+ back_up.release()
58
+
59
+ now = datetime.datetime.now()
60
+
61
+ s_now = now.strftime('%Y-%m-%d-%H-%M-%S')
62
+
63
+ back_up = cv2.VideoWriter(f'{s_now}.m4v', fmt, fps, size)
64
+
65
+ time = 0
66
+
67
+ time += 1
68
+
69
+
70
+
71
+ # fram
72
+
73
+ _, frame = cap.read()
74
+
75
+ frame = cv2.resize(frame, size)
76
+
77
+
78
+
79
+ # 保存
80
+
81
+ writer.write(frame) # original
82
+
83
+ back_up.write(frame) # back_up
84
+
85
+ cv2.imshow('frame', frame)
86
+
87
+
88
+
89
+ # Enterキーで終了
90
+
91
+ if cv2.waitKey(1) == 13:
92
+
93
+ break
94
+
95
+
96
+
97
+ # 保存
98
+
99
+ writer.release()
100
+
101
+ cap.release()
102
+
103
+ cv2.destroyAllWindows()
104
+
105
+
106
+
107
+ ```