Raspberry Pi Advent Calendar に書こうと思ったら、枠が埋まってしまったので、こちらに書くことにしました。
この記事は、Raspberry Pi Advent Calendar 2017 11日目の記事、@take-iwiwさんによる「Raspberry PiとLinux的方法によるデジタルカメラの作成」に感銘を受けて書きました。
Raspberry Piのカメラモジュールで写真を撮影します。
OpenCVを利用してカメラ画像の取り込みを行うプログラムは、かつて私の個人ウェブサイトで記事にしました。OpenCVを使わず、Video for Linuxだけで画像を取り込みたかったのですが、Video for Linuxの資料が極めて少なく、サンプルプログラムも皆無という状況だったため、諦めていました。
そんなところ、上記記事でVideo for Linuxで画像を取り込む方法がわかったので、私もやってみることにしました。上記記事では、X Windowを使わず、液晶画面の制御まで自前で行うという、かなりすごい記事なのでご一読をおすすめします。
私がやったのは、Video for Linuxからキャプチャするコードをパクっ拝借して、Qtのスレッドで連続キャプチャする処理と、Qtのウィジェット内に描画するくらいなので、実はたいしたことはやっていません。
OSはraspbianを使用します。あらかじめraspi-config
でカメラのサポートを有効にしておいてください。
Video for Linux をインストールします。
$ sudo apt-get install libv4l-dev
この中に、bcm2835-v4l2
というモジュールが入っていますので、modprobe
コマンドで読み込むか、/etc/modules
に記述して再起動しておきます。lsmod
コマンドを実行して、bcm2835_v4l2
と、videobuf2_*
がいくつか読み込まれていればOKです。
アプリの開発は、私の記事「Raspberry Pi でGUIアプリ開発、初めての手引き」を参考に構築してください。
ソースコードはGitHubに置いてあります。Qt CreatorからQtRaspberryPiCameraCapture.pro
を開いて、ビルド、実行してください。