ラズパイカメラを使って連続撮影&fbiコマンドでCUI画面のフレームバッファに直接表示する方法。Piラズパイカメラを使って連続撮影&fbiコマンドでCUI画面のフレームバッファに直接表示する方法。itLinkedInPocketCopy前回の記事で、ラズパイのカメラモジュールを使ってサクサクと写真が撮れることがわかりましたので、さらに色々と試してみます!今回は、連続撮影やCUI環境でも画像を表示する方法を紹介します。どんなキーでも送れるようにしてみた。関連raspistillコマンドで連続撮影USB接続のWebカメラでfswebcamコマンドだと、15秒ほど待たないと次の写真が撮れませんでした。raspistillコマンドでどれくらいの頻度で撮影できるか確かめてみます。1回の撮影にかかる時間をtimeコマンドで計測してみます。"-t"オプションで最小値の1を指定しました。0m0.140s結果は、約1秒。次に連続撮影を試してみます。連続撮影するスクリプト(stcam-n.sh)を書いて、シェルの実行時間を計ります。※縦横サイズを800×600にしています。1done実行結果です。0m0.740s6枚撮影して7.75秒。途中書込に時間がかかったのか少し遅れる事がありましたが、概ね1秒強で撮影できており、Webカメラよりかなり速く連続撮影できることがわかりました。今回はフルサイズで撮影すると重すぎたので800×600で撮影しましたが、途中2枚ほど写真に横線が入っていました。処理能力が低いラズパイzeroで、大きな写真を高速&連続で撮影するとエラーが入ってしまうようなので注意が必要です。CUIの画面に表示してみるraspistillでの撮影中に、HDMI接続したディスプレイの画面にプレビューが表示されていたので、これはきっとCUI画面でも撮った画像を表示できるに違いない!と思って探したらありました!ポイントは、フレームバッファに直接描画です。※後で知ったのですが有名な話なんですね。fbiコマンドを使ってシェルで表示ラズパイに直接キーボードを接続できる場合には、フレームバッファに直接描画してイメージを表示するコマンド「fbi」が使えます。スライドショーで表示したり編集できたりとなかなかの優れものです。fbi取り急ぎ確認したい場合は、画像ファイルを指定します。ss.png表示中にキーを押す事で様々な操作が可能です。使うものを列挙します。※fbiの他にもpythonのpygameを使った表示方法などもありましたが、ラズパイzeroだとpythonの起動に5秒ぐらいかかってあまり実用的ではなかったので止めました。guissh接続でHDMIディスプレイに画像を表示するラズパイzeroの貴重なUSBポートをキーボードに占有されるのはもったいないし、sshで作業する方が楽です。そこで、ラズパイにつないだHDMIディスプレイにssh経由のfbiコマンドで画像を表示する方法を紹介します。バーチャルコンソールを“-T"で指定する。管理者権限で実行する。仮想ターミナル(/dev/tty1)に表示する場合は、以下のようにします。framebufferを直接指定しなくても表示されます。終了するときは“q"を送るか、pkillでプロセスを切ります。fbi(※pkillは無理矢理終了なので、オススメは上記の“q"を送る方法です。F1〜F6)と、プロセスと標準入力が切り離されてしまいうまく終了できなくなる場合があるので注意が必要です。“q"キーを送るスクリプト(ssh経由)fbi実行時には必ず使うので、先ほどの"q"を送るスクリプトを作成して、パスが通る所に置いておくと操作が快適になります。パスが通った適当な場所にファイルを作り、中に先ほどのperlのスクリプトを貼り付けて保存します。~/local/bin/send-key-q~/.bashrcの最後に以下の1行を追記してパスを通します。PATH=$PATH:$HOME/local/bin読み込み直して有効化します。実行することで安全に終了することができるようになります。どんなキーでも送れるようにしてみた。$chr)'任意の文字を引数に指定すれば送る事ができます。q[/code]※なお、ラズパイ本体の方でログインしておかないと終了以外のコマンドは受け付けない(実際はログイン画面が表示されるだけ)ので注意が必要です。Pi(raspbian)でSSHからHDMI接続中の画面にXを使わず画像を表示する。ssh接続でキーストロークを送信する仕組みがわかりません、どうやって検索や調べ物をすれば良いのでしょうか?ioctlについて調べてみたおまけ。HDMI出力のOn/Offをコマンドで切り替えるSSH経由で作業している時など、仮想コンソール(tty1など)にしばらくキーボード入力がないと、ラズパイのHDMI出力が停止してしまいます。そんな時はコマンドで簡単にOn/Offを切り替えることができます。/sys/class/graphics/fb0/blank"blankの切り替えなので0と1の動作には注意して下さい。hdmi-off)、パスが通った場所に設置する(~/local/bin/に置く)と作業が楽になります。Piでフレームバッファを使ったデジタルサイネージまとめCUI環境でもフレームバッファに直接描画して画像などを見る事ができました。it0LinkedIn-Pocket0Copy-なぜブログを書こうと思ったか。自宅のIoT化実験用の情報端末が欲しい〜。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスウェブサイトこのフォームを使用することにより、このウェブサイトによるデータの保管および取り扱いに同意するものとします。5+1選!【運用編を追加】まーくお問い合わせやってみてわからなかったことなど技術的な質問は、各記事の一番下にコメント欄(ディスカッション)がありますのでそちらにお願いします。その他はtwitter(@iot_plus_net)にどうぞ。