Raspberry Piにwebカメラを接続してOpenCVで表示する2015/04/08 00:07

Raspberry Piにwebカメラを接続してリアルタイムで画面表示させたい。それをスマホから見たい。

使用するカメラ:Logitech QuickCam Fusion

技術要素は3点
(1)Webカメラの画像をデスクトップに表示する
(2)表示した画像をリモートで見れるようにする
(3)スマホ側からRaspberryPiへリモート接続できるようにする



(1)Webカメラの画像をデスクトップに表示する
Raspberry Piにwebカメラを接続して、デスクトップに表示させるところまではOpenCVとサンプルプログラムを使用する。LinuxマシンへのOpenCVの導入と、Webカメラの画像を取得してデスクトップ上のウィンドウに表示するサンプルプログラムが以下に紹介されており、その通りの内容を順番に実行するだけでできる。

Installation of OpenCV for Ubuntu and Raspbian
Setting up OpenCV C++ for Ubuntu and Raspbian

作成するCPPソースファイル上で、画面表示サイズをパラメータ指定する。使用したカメラのスペック上は1.3MPIXELの撮影が可能だが、320×240に抑える。

作成したCPPファイルをビルドする。
$ g++ camera.cpp -o camera `pkg-config opencv --cflags --libs`

プログラムの実行
$ sudo ./camera

プログラムの終了
スペースを押すとキャプチャされる.
実行フォルダ内に「frame.png」という形式で保存される。

実行画面はこんな感じ。起動中は画面リフレッシュを繰り返すせいか、CPU使用率が振り切った状態のままになる。かなり高負荷だ。

(2)表示した画像をリモートで見れるようにする
これだけではRaspberry Piをカメラにしただけだが、ネットワーク越しにスマホからRaspberry Piのデスクトップ画面を見る事が出来るようにすれば、カメラ画像も見る事ができ、監視ツールとして使える。Raspberry Piに対してXRDPとよばれるリモートデスクトップ接続を可能にするサーバソフトをインストールすれば可能になる。基本的に
$ sudo apt-get install xrdp
でよい。詳しい説明はググると山ほど事例が出てくるので割愛。

※X11RDPと呼ばれるNewVersionが存在するが、残念ながらRaspberry Piでは使えませんよと書いてある。
http://scarygliders.net/2013/07/25/x11rdp-o-matic-version-3-now-released/

(3)スマホ側からRaspberryPiへリモート接続できるようにする
接続するクライアント側には、RDPクライアントをインストールし、Raspberry Piへの接続設定をする事で接続可能となる。iOS向けでフリーのRDPクライアントをいくつか試したが、以下が比較的ちゃんと動いた。設定の問題だけかもしれないが、Microsoft製のRDPクライアントではキーボードが正しく反応しなかった。

iRdesktop

さらにRaspberry PiにPPTPサーバを入れておけば、(セキュリティ上の懸念はあるが)外部からも接続できる。夢が広がる。もっと賢いやり方もあると思うが。。

Raspberry Pi RDP接続 日本語keymap適用2015/04/11 02:09

Raspberry Pi にXRDPをインストールしてRDP接続するとキーボードがUSになる。
Shift + 2 キー入力の結果が「@ 」になる。
USキーを日本語キーボードにするための手順がWEBにある。
でもなぜか手順通りやったつもりなのに、うまくいかなかった事が解決したのでメモ。
シロウトがlinuxに手を出すと、想像もつかない所で引っかかる。

参照元
https://xrdp.vmeta.jp/%E3%82%AD%E3%83%BC%E9%85%8D%E5%88%97%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
http://qiita.com/tsukaman/items/af79cde2a72d64c46261

作業ステップとハマり箇所
(1)RasbianにXRDPパッケージを導入
 →ここは間違えようがない
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xrdp

(2)日本語キーマップファイルのコピー
 →root権限で実行する事(ハマる)
sudo su -
cd /etc/xrdp
sudo wget http://w.vmeta.jp/temp/km-0411.ini
chmod 644 km-0411.ini
sudo ln -s km-0411.ini km-e0200411.ini
sudo ln -s km-0411.ini km-e0010411.ini
sudo ln -s km-0411.ini km-e0210411.ini

(3) /etc/xrdp/startwm.sh ファイルをエディタで編集
 →ここも記載通り。以下を記載して後は#でコメントアウト。

export LANG=ja_JP.UTF-8

. /etc/X11/Xsession

(4) xrdpサービスの再起動
 →これも間違えようがない。
sudo /etc/init.d/xrdp restart