teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問を簡潔にしました。

2019/11/26 01:06

投稿

raspypy
raspypy

スコア247

title CHANGED
File without changes
body CHANGED
@@ -2,77 +2,19 @@
2
2
 
3
3
  動画撮影を条件判定の度に区切りたい。
4
4
 
5
- 〇:判定(条件を満たしていない)
6
- ●: 判定(条件を満たした)
7
- 〇||||||1min||||||〇||||||1min||||||●||||||1min||||||〇||||||1min|||||| 〇
8
-
9
-
10
5
  ##困っていること
11
6
  条件判定するデータの更新は、1分
12
- ⇒ユニットファイルで、.sh(↓)プログラム1min毎に設定
7
+ ⇒ユニットファイルで、時間を設定
13
8
 
14
9
  動画の撮影時間は、
15
- Movie.pyのプログラム内で設定
10
+ プログラム内で設定
16
-
17
- **動画の撮影を条件判定したタイミングで終了させたい**
18
- 〇>>>>test.mp4>>>>〇>>>>>>b.mp4>>>>>●>>>>>>a.mp4>>>>>〇>>>>>test.mp4>>>>〇
19
- のですが、
20
- **実際は、**
21
- 〇>>>>test.mp4 〇>>>>>>b.mp4 ●>>>>>>a.mp4 〇>>>>>test.mp4 〇
22
- このように、条件判定~Movie.pyで指定した時間まで撮影したところで終了してしまうので、
11
+ このように、条件判定で指定した時間まで撮影したところで終了してしまうので、
23
12
  判定直前の動画が撮影されません。
24
13
 
25
- Movie.pyの時間で調整する以外に、なにか良い方法がありませんでしょうか。
14
+ プログラム内の時間で調整する以外に、なにか良い方法がありませんでしょうか。
26
15
 
27
16
 
28
17
 
29
18
  ##条件の判定
30
19
  1分毎にCSVファイルにデータを更新(追加)しています。
31
- 追加された最新データについて、条件を満たすか判定しています。
20
+ 追加された最新データについて、条件を満たすか判定しています。
32
- **.shプログラムを1min毎に実施するようにユニットファイルを作成して、動作させています。**
33
-
34
- ##現在のプログラムの構成
35
- ```sh
36
- #!/bin/sh
37
- #データ記録(from BME280 to csv)
38
- /home/pi/dev/./CSV.py
39
- #csvファイルアップロード
40
- /home/pi/gdrive update hogehoge /home/pi/test.csv
41
- #条件判定・動画撮影
42
- /home/pi/dev/./Movie.py
43
- #動画ファイルアップロード
44
- /home/pi/gdrive sync upload /home/pi/Movie hogehoge
45
- ```
46
-
47
- ##動画撮影プログラム
48
- ```python
49
- start_time = datetime.now()
50
- set_time = 60
51
-
52
- if judge=22.5:
53
- #test.mp4のファイル名変更
54
- os.rename ('/home/pi/test.mp4', b)
55
- writer1 = cv2.VideoWriter(a, fmt ,25, (width, height))
56
- while True:
57
- ret, frame = cap.read()
58
- writer1.write(frame)
59
- end_time = datetime.now()
60
- diff = end_time - start_time
61
- print (diff)
62
- delta_t = diff.seconds
63
- if delta_t >= set_time:
64
- break
65
- writer1.release()
66
- else:
67
- writer2 = cv2.VideoWriter('/home/pi/test.mp4', fmt ,25, (width, height))
68
- while True:
69
- ret, frame = cap.read()
70
- writer2.write(frame)
71
- end_time = datetime.now()
72
- diff = end_time - start_time
73
- delta_t = diff.seconds
74
- if delta_t >= set_time:
75
- break
76
- writer2.release()
77
- cap.release()
78
- ```