Raspberry Pi のカメラモジュールで撮影


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を開いて、ビルド、実行してください。