2020.6.13
RaspberryPi上でカメラの画像や映像を扱うにはraspivid
コマンドやraspistill
コマンドやfsbcam
コマンドを使う。これらを試してみた。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
こちらの全天球カメラをRaspberryPiに接続して使う。
Insta360 Air | Insta360 360度ビデオカメラ | 株式会社アスク
raspistill
, raspivid
コマンドを使ってみるraspistill
は画像を保存するAPI。
raspistill - Raspberry Pi Documentation
raspivid
は動画を保存するAPI。
raspivid - Raspberry Pi Documentation
下記コマンドで動画保存してみる。
raspivid -o vid.h264
下記エラーが出た。
mmal: Cannot read camera info, keeping the defaults for OV5647
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not enabled in this build. Try running "sudo raspi-config" and ensure that "camera" has been enabled
カメラデバイスが認識されているか確認するが、認識されていない模様。
vcgencmd get_camera
> supported=0 detected=0
エラーをよく読んでみるとこう書いてあるのでsudo raspi-config
でカメラを有効化してみればよさそう。
Try running "sudo raspi-config" and ensure that "camera" has been enabled
sudo raspi-config
を実行5 Interfacing Options
を選択P1 Camera
を選択はい
を選択有効化して再起動して確認してみる。supported
が1
になった!
vcgencmd get_camera
> supported=1 detected=0
カーネルのアップデートをしてみた。
sudo rpi-update
sudo reboot
もう一度動画保存をトライ。
raspivid -o vid.h264
下記エラーが出た。色々調べてみたが、ちょっとお手上げ。
mmal: Cannot read camera info, keeping the defaults for OV5647
mmal: mmal_vc_component_create: failed to create component 'vc.ril.camera' (1:ENOMEM)
mmal: mmal_component_create_core: could not create component 'vc.ril.camera' (1)
mmal: Failed to create camera component
mmal: main: Failed to create camera component
mmal: Camera is not detected. Please check carefully the camera module is installed correctly
fsbcam
コマンドを使ってみるよくドキュメントを探してみるとWebカメラを扱うためのfsbcam
コマンドを見つけた。どうやらraspistill
, raspivid
はWebカメラではなくカメラ"モジュール"のためのコマンドらしい。
Using a standard USB webcam - Raspberry Pi Documentation
インストールしてみる。
sudo apt install fswebcam
画像保存してみる。
fswebcam image.jpg
下記エラーが出たが、これはWebカメラが他のプロセスで使用されているためだった。Webカメラを使用しているアプリケーションを落として再トライ。
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Error selecting input 0
VIDIOC_S_INPUT: Device or resource busy
保存できた!
--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 1472x736.
--- Capturing frame...
GD Warning: gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x95 0x5cCaptured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'image.jpg'.
出来上がった画像を開いてみると、真っ暗になってしまった…。
これは調べてみたら露光時間が極端に短いのが原因でした。露光時間を設定して再チャレンジ。
fswebcam -F 100 ./tmp.jpg
ちゃんと撮れた!
次回はnode.jsでWebカメラを扱ってみる。