Raspberry PiのlibcameraをSSH越しに起動したらError発生
先日、OV5647というOmniVision社製イメージセンサーを搭載した以下のカメラモジュールで画像を取得してみた。そのときはRaspberry PiにモニターをつなげてGUI上でlibcamera-jpegやlibcamera-stillなどを実行して問題なく写真が撮れたのだが、先日Xサーバー(Xming)を立ち上げたPCからSSHごしに
libcamera-jpeg -o test.jpg
のようにlibcameraのコマンドを実行したところ、一瞬XmingのWindowが立ち上がった後にすぐ消え、そのあと
terminate called after throwing an instance of 'std::runtime_error' what(): failed to import fd 19 中止
というエラーが出て写真が撮れなかった。この時に行った対策をメモしておく。
実行環境
ラズベリーパイ側
Raspberry Pi 4 Model B
Raspberry Pi OS (Bullseye)
カメラモジュール(OV5647)
PC側
Windows 10
Xming 6.9.0.31
対策その1:Xサーバー(Xming)を終了する
PC側のXmingが立ち上がってからerrorが出るので、まずはシンプルにXmingを終了してみる。Windows 10だったら、Xmingを右クリックしてExitをクリックして終了すればOK。
この状態でPCからラズパイにSSH接続して、再度以下のようにlibcameraのコマンドを実行。
libcamera-jpeg -o test.jpg
すると、問題なく写真が撮れた。
対策その2:libcameraを-n(プレビュー無し)optionで使う
上の対策でlibcameraは使えたのだが、いちいちXサーバーを終了するのはちょっと面倒くさい。どうもlibcameraでPreviewをするときにXサーバーと通信が発生するようなので、以下のラズパイの公式ドキュメントのコマンドラインオプションに記載がある-nオプション(nopreviewオプション)をつけて、preview無しで写真を撮ってみることにする。
https://www.raspberrypi.com/documentation/accessories/camera.html#common-command-line-options
以下のように-nオプションをつけてプレビュー無しで実行すれば問題なく写真が取れた。
libcamera-jpeg -n -o test.jpg
libcamera-jpegだけでなく、libcamera-stillやlibcamera-vidも同じように-nオプションをつければ、SSH越しでも写真や動画が撮れた。
プレビューが見れないのは少し不便ではあるが、ひとまずこれでSSH越しでも写真は撮れるようになった。
※追記:
コメントで–qt-previewというオプションをつければ、previewがソフトウェアレンダリングに切り替わって動作するという情報を頂きましたm(_ _)m 以下のように実行すればpreviewも見れるようです。
libcamera-jpeg -o test.jpg –qt-preview
「Xサーバ(Xming)を起動したPCでSSH越しにRaspberry Piに接続してlibcameraを使ったら「failed to import fd 19」というエラーが出た」に2件のコメントがあります
hobbyhappy
(2023年1月29日 - 2:57 PM)初めまして。この記事と同じ(私の場合はVNC接続)現象が発生していましたが、
別のRaspberryPiに関するフォーラムで解決策について記載がありました。
もう必要ないかもしれませんが、念のため共有しておきます。
具体的には、–qt-previewというオプションをつけることでソフトウェアレンダリングに切り替わって動作するという内容です。
libcamera-jpeg -o test.jpg –qt-preview
こちらのコマンドで動作すると思います。
wakky
(2023年2月5日 - 9:58 AM)情報ありがとうございます!
本文にも追記させて頂きました~