専門知識不要!複雑な画像処理が行えるライブラリ"OpenCV"とは? では、OpenCVについてと、対応するTexas Instruments社(以降TI社)の製品にどのような物があるかご紹介しました。
今回はOpenCVを使った応用例の一つとして、TI社の評価ボード「AM572x Evaluation Module」で歩行者の検知を行う方法をご紹介します。
それでは準備を行っていきましょう。
ハードウェアの準備

- 評価ボード
- ACアダプタ
- TI社オフィシャルサイト指定の物
- 12V5A(プラグ:外径: 5.5mm、内径: 2.5mm)
- シリアルケーブル
- SDカード
- microSD(8GB程度)
※必要に応じて、PCに接続用のmicroSDカードリーダもご準備ください
- microSD(8GB程度)
開発環境の準備
開発ホストPC(LinuxのホストPC環境)を準備します。
※LinuxPCが準備できない場合、以下の手順でWindows-PCにLinux環境を構築します。
仮想OS環境の構築
- VirtualBOXをダウンロードしインストールします(今回使用したversionは5.1.18)
- VirtualBox(ExtensionPack)をダウンロードしインストールします
Linux(ubuntu)のインストール
- Ubuntu のISOイメージをダウンロードします。(今回使用したversionは14.04.5 LTS)
- VirtualBOXを起動し、「新規」をクリックして仮想マシンを作成します。
- 作成した仮想マシンを選択し、「起動」をクリック後、ダウンロードしたubuntuのISOファイルを指定してubuntuをインストールします。

- ubuntuインストール後、ubuntuを再起動し、「デバイス」から「Guest Addition CD イメージの挿入」をクリックしGuastAdditionをインストール後、ubuntuを再起動します。

評価ボードの起動用のSDカードの準備
TI社提供のLinux-SDK(無償)を使用し、起動用のSDカードを作成します。
- Ubuntu上でSDKをダウンロードし、インストールします。
(今回は、PROCESSOR-SDK-LINUX-AM57X 03_02_00_05を使用)

- LinuxホストPCにSDカードを挿入し、以下のコマンドを実行することで、評価ボードの起動用のSDカードを作成します。
$ cd ~
$ cd ti-processor-sdk-linux-am57xx-evm-03.02.00.05
$ sudo ./bin/create-sdcard.sh
- 作成したSDカードを評価ボードに挿入し、評価ボードの電源をONすると、評価ボードのLCDに以下のようなGUI画面が表示されます。

ソフトウェアの準備
- OpenCVのプログラムを準備します。
main.cpp
#include
#include
#include "OpenCV2/OpenCV.hpp"
int main(int argc, const char * argv[]) {
cv::Mat img = cv::imread("input.jpg", 1);
if(img.empty()) return -1;
cv::HOGDescriptor hog;
cv::Mat gray_img;
std::vector found;
cv::cvtColor(img, gray_img, CV_BGR2GRAY);
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
hog.detectMultiScale(gray_img, found);
for(int i = 0; i < found.size(); i++){
cv::Rect r = found[i];
rectangle(img, r.tl(), r.br(), cv::Scalar(0, 255, 0), 2);
}
cv::imshow("hog", img);
cv::imwrite("output.jpg", img);
cv::waitKey(0);
}
- プログラムをビルドします。
開発ホストLinux上に任意のディレクトリを作成し、以下の2つのファイルを保存します。
(今回は、ディレクトリ "cv_work" を作成)
- OpenCVのプログラム(main.cpp)
- Makefile(以下よりダウンロード可能)
Makefile
$ cd ~
$ mkdir cv_work
$ cd cv_work
- LinuxのホストPCで以下のコマンドを実行しビルドします。
$ export TI_SDK_PATH=~/ti-processor-sdk-linux-am57xx-evm-03.02.00.05
$ make clean
$ make all
- ビルドしたファイルを以下のコマンドの実行により、SDカードにコピーします。
開発ホストLinuxにSDカードを挿入し、"/home/root" に実行ファイル(cv_sample)をコピーします。
今回は、以下のようにDebug/cv_sampleをコピーしました。
$ sudo cp Debug/cv_sample /media/[user名]/rootfs/home/root/
動作確認
- 人物検知を行う画像ファイル(JPEG)を準備し、以下の手順でSDカードに保存します。
今回は、VGAサイズより少し小さめ(572x400ピクセル)の歩行者画像を使用しました。

windows-PCにSDカードを挿入し、準備した画像を "input.jpg" で保存します。

次にLinuxホストPCにSDカードを挿入し、以下のコマンドの実行により、画像ファイルを "/home/root" にコピーします。
$ sudo cp /media/[user名]/boot/input.jpg /media/[user名]/rootfs/home/root/
- シリアルケーブルでPCと評価ボードを接続します。

- 作成したSDカードを評価ボードに挿入し、ボードにACアダプタを接続後、電源スイッチをONにします。
- terminalソフト(TeraTerm等)を起動し、適切なポート番号を指定し、以下のようにパラメータを設定します。

- 評価ボードの実行画面上(コンソール)で以下のように、rootでlogin後、実行ファイル(cv_sample)を実行し動作を確認してみてください。評価ボードのLCDパネルに表示された歩行者に緑の枠が確認できると思います。
※歩行者検知精度は、OpenCVのプログラムのパラメータ記述の修正にて調整します。
am57xx-evm login: root
root@am57xx-evm:~# ./cv_sample

最後に
今回は、TI社のArmプロセッサ製品の評価ボードとLinuxのSDK(無償)上でOpenCVを使用した歩行者検知のプログラム動作を確認するまでの手順をご紹介しました。
TI社のArmプロセッサ製品(Sitaraファミリ)はcortex-A8, A9, A15を搭載したラインナップをご提供しております。今回ご紹介しましたAM57シリーズはArmプロセッサ(cortex-A15)に加え、高性能の64bit-DSPを搭載しており、DSPへ画像処理をオフロードすることによる更なる性能最適化を見据えた製品となっております。
また、開発時間の短縮に繋がるAM57シリーズを使用したリファレンスデザインも多数TI社より公開されております。是非、以下の「メーカーサイト/その他関連リンクはこちら」に記載したリンクよりご覧ください。
おすすめ記事/資料はこちら
専門知識不要!複雑な画像処理が行えるライブラリ"OpenCV"とは?
CapTIvateでタッチセンシング結果をLCDに表示させるリファレンスデザイン
産業用イーサネット規格にマルチ対応!ASICやFPGA不要のプロセッサ
フレーズに応答する音声認識デモを作ってみよう
商品の購入はこちら
メーカーサイト/その他関連リンクはこちら
TMDSEVM572X 製品ページ
AM572x プロセッサを基本とする 3D マシン・ビジョン、DLP® 構造照明付
電源および熱設計検討事項、TI 製 AM57x プロセッサ使用、リファレンス・デザイン
AM57x 上のモンテカルロ・シミュレーション、OpenCL 使用、DSP アクセラレーション用、リファレンス・デザイン