この前の運転会で鉄道模型を至近距離から撮影するカメラが欲しくなり、ラズパイで自作してみた
カメラの購入と初期セットアップ
とりあえず秋葉原でラズパイ用のカメラを購入。ラズパイ本体は家に転がってたのを回収して使用。
#buynow SDカードはこの前論理破損したFlashAirの交換用。 pic.twitter.com/wjdfGKPu1C
— まっちゃん (@mattyan_1117) December 4, 2021
母艦になるラズパイは、家のラズパイタワーの最上段で寝てたのを回収。 pic.twitter.com/GXlI4Og5R9
— まっちゃん (@mattyan_1117) December 4, 2021
OSはRaspberryPIOSの64bitをインストール。 ただよく考えたらメモリ4GBしかないんだし32bitOSで良かったかもしれない。特に64bitのメリットもないし。
試し撮り
gstreamer一式をインストールしてまずは試し撮り。 ターミナルからコマンドを打ってgstreamerでキャプチャからプレビューまでやってみた。
gatreamer入れてキャプチャのテスト。何も考えずに組むと「でかい」「遅い」「暗い」の3点セットだったけど、capfilterで設定したら「でかい」と「遅い」は解決した。「暗い」は……実際に運用して確認するしかなさそうだな。 pic.twitter.com/8HmmhmLb3Q
— まっちゃん (@mattyan_1117) December 4, 2021
カメラの初期設定がスチル用の高画質モードだったのと反転してたし暗かったので、
v4l2-ctl --set-ctrl horizontal_flip=1,vertical_flip=1,brightness=55
で反転と明るさを修正して
gst-launch-1.0 v4l2src ! video/x-raw,width=1280,height=720,framerate=30/1 ! videoconvert ! ximagesink
で動画用解像度にしてなんとかまともに写るように。
「重い」「暗い」はv4l2-ctlで反転と明るさ設定したら改善した。もうちょっと調整すればよくなるかな。 pic.twitter.com/ihjJZZYGLF
— まっちゃん (@mattyan_1117) December 4, 2021
ラズパイとカメラはタミヤの楽しい工作シリーズのユニバーサルプレートとユニバーサルアームで固定。gtkmmとgstreamerを使って撮影用アプリを作成。
gtk(gtkmm)で書き直し中のプログラム、とりあえずプレビュー垂れ流すところまで実装できた。 pic.twitter.com/CwXB29C2KI
— まっちゃん (@mattyan_1117) December 6, 2021
gstreamer
キャプチャから保存にかけてはGstreamerを使用。
gstreamerのパイプラインは
で構成。v4l2srcでカメラからキャプチャしてteeでプレビュー用ximagesinkと保存用のパイプラインに分岐。
保存用のパイプラインは必要なときに接続するように構築。
試用結果
ラズパイとカメラモジュールで鉄道模型を撮ってみた。
重い、でかい、操作しづらい、などの不満点はあるけど画質は満足。
「でかい」に関してはスパイカメラに換装と、動画を諦めてマイク撤去して静止画専用カメラにすると改善するかな。ラズパイZeroはどうなんだろう……これ動くのかな? pic.twitter.com/7vAv6UcLIi— まっちゃん (@mattyan_1117) December 11, 2021
マイクも装備してみたけど、思ったより邪魔くさいんで撤去。 またカメラ自体もちょっと大きいんで、スパイカメラへの換装を計画中。
あとやりたいことと
- 開発環境をラズパイに移行
- 32bitOSへの移行とハードウェアエンコードの確認
- スパイカメラへの換装
- マイク再設置と動画対応
- カバー作れたら作りたい