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

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

スポンサーリンク

参考

treeコマンドで罫線が文字化けするときの対処法 - 備忘録とかいろいろ
teratermでサーバにssh接続し、treeコマンドを使用した際に 以下のように罫線が文字化けして表示されるTERATERM.INIに設定を書く方法もあるようだが、 手っ取り早く直すには「--charset」オプションを使用する $ t...
Pythonでファイル名・ディレクトリ名の一覧をリストで取得 | note.nkmk.me
Pythonでディレクトリ内(フォルダ内)のファイル名・ディレクトリ名(フォルダ名)の一覧を取得するには、osモジュールのos.listdir()関数を使う。 os.listdir() --- 雑多なオペレーティングシステムインターフェー ...
Pythonで文字列・数値をゼロ埋め(ゼロパディング) | note.nkmk.me
Pythonで文字列strや整数intなどをゼロ埋め(ゼロパディング)する方法について、サンプルコードとともに説明する。 右寄せゼロ埋め: zfill() 右寄せ、中央寄せ、左寄せ: rjust(), center(), ljust() 任...
Pythonで数値を文字列に変換する:str()
Pythonで数値などのオブジェクトを文字列に変換するstr()を紹介します。 オブジェクトを文字列に変換するstr()の使い方 str()の記述方法は以下のと…

コメント

タイトルとURLをコピーしました