ブログ

Armadillo-X1: OpenCVによる画像処理結果をネットワーク経由でPCで確認する

at_takuya.sasaki
2017年2月5日 16時37分

以前書いた以下のブログでは、OpenCVによる画像処理の結果は、ファイルに保存していました。
Armadillo-X1でOpenCVを使って見る

しかし画像処理の結果を、連続してウィンドウに連続描画したい場合が多いと思います。 Armadillo-X1にUSBモニタを接続する方法もありますが、今回はLANで接続したPC上でウィンドウ表示する方法を試してみます。

1. 構成

今回もArmadillo-X1にUSBカメラを接続して評価してみます。 今回利用したUSBカメラは家電量販店などで購入した以下の製品になります。

BSWHD06Mシリーズ

2. パッケージのアップデート

まずはパッケージのアップデートとアップグレードを行います。

root@armadillo:~# apt-get update
root@armadillo:~# apt-get upgrade

3. OpenCVのライブラリをインストール

Armadillo-X1の標準のユーザーランドには、OpenCVのライブラリがインストールされていません。 今回は、サンプルソースコードのビルドもArmadillo-X1上で行うこととしますので、開発用パッケージを以下のようにインストールします。

root@armadillo:~#  apt-get install libopencv-dev

なお、Armadillo-X1のユーザーランドであるDebian GNU/Linux 8(jessie)で用意されているOpenCVのパッケージは、2.4.9になります。

4. ATDE6でX Serverの設定を行う

Armadillo-X1上での画像処理結果を、リモート接続したATDE6上で表示するための設定を行います。

4.1 ログインマネージャ gdm3のTCP接続を許可

/etc/gdm3/daemon.conf を編集し "DisallowTCP=false" を追加します

atmark@atde6:~$ sudo vi /etc/gdm3/daemon.conf

    [security]
    DisallowTCP=false
4.2 Xserverのtcp接続を許可

/etc/X11/xinit/xserverrc を編集し、exc /user/bin/X -nolisten tcp "$0" をコメントアウトします

atmark@atde6:~$ sudo vi /etc/X11/xinit/xserverrc

    #!/bin/sh

    # exec /usr/bin/X -nolisten tcp "$@"
4.3 設定の有効化

一度リブートします

sudo reboot
4.4 xhost、アクセス制限解除

再起動したら、xhostのアクセス制限を解除します

atmark@atde6:~$ sudo xhost +

5. サンプルソースをビルド

今回のサンプルソースコードは、以下のHowToで公開しているエッジ検出のサンプルコードを使います。 ただし、以下のHowToではブラウザ経由での結果参照ですが、今回はcvNameWindow/cvShowImageなどを利用したウィンドウ表示の方法に変更しています。

Howto : Armadillo-810上でのOpenCVの画像処理結果を確認する

サンプルソースコードは以下からダウンロードしてください。
サンプルソース

ネットワーク/USBメモリ経由などで上記サンプルソースをArmadillo-X1上にコピーしたあと、以下のようにビルドしてください。

root@armadillo:~# ls sample_convert.tar
sample_convert.tar
root@armadillo:~# tar xvf sample_convert.tar
./sample_convert.c
./Makefile
root@armadillo:~# make
gcc    -c -o sample_convert.o sample_convert.c
gcc -lopencv_core -lopencv_highgui -lopencv_imgproc -lm -o sample_convert sample_convert.o

6. サンプルソースを実行

Armadillo-X1とATDE6がネットワークで接続されている状況にした後、X1にUSBカメラを接続していることを確認して、以下のコマンドでサンプルを実行してみます。 *IPアドレスの欄には ATDE6のIPアドレスを指定してください。

root@armadillo:~# DISPLAY=192.168.82.100:0.0 ./sample_convert 0
Gtk-Message: Failed to load module "canberra-gtk-module"

#エラーメッセージも出ますが、とりあえずは無視していいかと思います。 #なお libcanberra-gtk-module をインストールすればメッセージは出なくなります。

これで、ATDE6の画面上に、以下のような画像処理結果のウィンドウが表示されるはずです。

以上です。