今回と次回では「Video4Linux」を利用し、Webカメラの映像をAndroid標準のカメラアプリでプレビュー表示できるようにします。Linuxの標準ドライバなどをAndroidから利用する手法を解説します。

日本Androidの会 金沢支部 出村成和

 今回から本格的にAR(Augmented Reality:拡張現実)の制作に取りかかかります。

 今回は、Webカメラから映像を取り込み、表示するところまで進めます。BeagleBoardはNTTドコモのAndroidケータイ「HT-03A」などと異なり、標準でカメラを装備していません。ですので、市販されているUSB接続のWebカメラを利用して映像を取り込みます。

図1●拡張現実システムのソフトウエア構造
図1●拡張現実システムのソフトウエア構造

 今回のように、Androidアプリから非標準のカメラを使う場合には、大きく分けて2個所を変更する必要があります。(1)Linuxカーネルにカメラを制御するドライバソフトを組み込む、(2)Androidライブラリからその(カーネル内部の)ソフトを扱えるようにライブラリのソースに手を加える――です。このライブラリをアプリケーションから呼び出します(図1)。

 (1)で追加する機能は「Video4Linux」と「UVC」です。

 Video4Linuxは、Linuxでビデオキャプチャデバイス(ビデオキャプチャーボード、Webカメラなど)を扱うAPI群です。Video4Linuxを使えば、デバイスに依存しないアプリケーションを作成できます。

 UVC(USB Video Class)は、USB接続されるWebカメラの規格です。WindowsとMac OS Xでは標準でUVCに対応しており、Linuxにも対応ドライバがカーネルに取り込まれています。また現在市販されているUSB接続のWebカメラは、ほとんどがUVC対応となっています。

 (2)では、フェイクカメラ(Webカメラの映像の代わりに市松模様が表示されています)として実装されているカメラ関連ライブラリを変更します。(1)で追加したドライバから取得した映像をAndroidのメモリー領域(サーフェイス領域)にプレビュー表示させます。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら