Raspberry Pi Zero WHで作った定点カメラを改良したい①連番で写真を保存

もうちょい自動化したい

もう定点カメラできたから違う感じのタイトルでいいや。連番で写真を保存して、画像には日付時刻を追記して、ある程度溜まったら動画を作る。ていうのをやりたい。フォルダ構成は

nas
|– pic
|– vid
`– shutter.py

こんななった。これtreeっていうコマンドで作れた。ラズパイには入ってなかったので

$ sudo apt-get install tree

ってやったら使えるようになったよ。

開発にあたってIDEないと泣きそうだなーと思って調べたんだけど、何が一番いいかよく分かんなかった。VSCのRemoteDevelopment使ってみたかったんだけど、ラズパイは対応してないアーキテクチャみたい。のでwinローカルでやっとる。泣きそう。

連番で写真を保存

連番で写真を保存、といってもどうやるのがいいんだろ。raspistillのオプションで

-tl, –timelapse : Timelapse mode. Takes a picture every <t>ms. %d == frame number (Try: -o img_%04d.jpg)

ていうのがあるんだけど、ターミナル上で実行しっぱなしみたいな感じになるのであんまやりたくない。プログラム中にカウンタ変数作るってのも、cronで一回一回プログラムを実行してるわけで、保持するやり方がわかんない。カウンタ用のファイルを作るとか?ファイルのリードライトってなんか難しそう。で、ずーっと考えてたら、フォルダ内のファイル数を使う方法を思いついた。Pythonにはフォルダ内のリストを返すのがあるってことでそれ使う。

import os

dir_path = '/home/pi/nas/pic/'
files = os.listdir(dir_path)
file_name = str(len(files)).zfill(5)

os.listdir()でList型のディレクトリとファイルの一覧が返るので、それをfilesで受けて、len()で要素数を調べる。フォルダに何も入ってなきゃ0が返るし、0始まりで都合がよろしい。その数を後ほどファイル名に使う。ただint型とstr型を結合しようとしても、都合よく文字列として自動で型変換はしてくれないので、str()で型変換する。また、このままだと0.jpg、…、10.jpg、…、100.jpgって感じになるので、.zfill()で0埋めしてあげる。結果、

nas
|– pic
| |– 00000.jpg
| |– 00001.jpg
| `– 00002.jpg
|– vid
|– shutter.py

こんな感じになった。とりあえず目的は達成~。

参考

http://yuusuke1988.hatenablog.jp/entry/2014/01/20/223602

https://note.nkmk.me/python-listdir-isfile-isdir/

https://note.nkmk.me/python-zero-padding/

https://uxmilk.jp/12381

カテゴリー: したい タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です