SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
日本Androidの会 京都支部
                      第3回 勉強会
                       (2011-12-03)

     OpenCV を
Android で動かしてみた



      Toru UENOYAMA
  @ 日本Androidの会 京都支部
自己紹介
   名前
       上野山 徹 (うえのやま とおる)
       Google+ : Toru UENOYAMA

   出身
       和歌山県
        • みかん と 梅干し と
          タチウオ と カレー で有名
                                  和歌山県

   仕事
       京都の電機メーカーで
        (組み込み + 画像処理)/2なソフト開発してます
What’s OpenCV ?
OpenCVとは
  オープンソースの画像処理ライブラリ
  コンピュータビジョンに関する
   数多くの機能を提供する
  最新研究の画像処理技術やGPGPUにも対応
  言語インターフェイス
     • 元はC言語向け
     • 今では C++, Python, Ruby, Java などなど
    対応OS
     • Windows, MacOS, Linux, FreeBSD, iOS, Android など

         ホビーユースから学術研究用途まで
        幅広く使える画像処理ライブラリです!
                                                         4
OpenCVの機能
各種フィルタなど        幾何表現や
 汎用画像処理         画像特徴量

                                           複数カメラで
領域分割・切出し                                   の三次元復元



色変換・形状変換




                                          フィッティング

機械学習,形状
認識,顔検出     移動物体の追跡

                        http://opencv.willowgarage.com/wiki/
                                                               5
OpenCV の実用例
   DARPA Grand Challenge
     制限時間内に車両自律走行で
      走破させる競技
     多くのチームが
      OpenCVを使用



   一部の画像処理検査装置
   研究機関でのアルゴリズム評価ソフト

                  http://en.wikipedia.org/wiki/DARPA_Grand_Challenge
                  http://www.cengen.com/content/darpa-grand-challenge-2004
                                                                             6
OpenCV の 歴史
   略歴
       1999年 Intelにて開発がスタート
       2006年 正式版(1.0)リリース
       2008年 WillowGarage(米ベンチャー)が開発を引継ぐ
   バージョン
          Ver     年月                   主な変更内容
        1.0     2006年10月   正式リリース
        1.1α    2008年10月   バグ修正,機能追加
        2.0     2009年9月    C++インターフェイス追加
        2.1     2010年4月    機能追加,TBB対応
        2.2     2010年12月   ライブラリ構成の見直し(細分化), CUDA対応
        2.3     2011年6月    Androidに正式対応,機能追加
        2.3.1   2011年7月    Android版のAPI充実

                                                      7
OpenCVの特徴

   実装機能が豊富
       画像処理に関することはほぼ網羅されている
        • 新機能もどんどん追加されている
       豊富すぎて必要な機能を探すのが大変だったり


   機能の粒度が小さい
       必要な機能だけを組み合わせて使える
        • (無駄がない)
       ほしい機能を作るためには,関連する関数を
        適切に組み合わせないといけない
                                8
OpenCVの特徴
   ドキュメントが全体的に不足
     リファレンスに行間が多すぎ
     リファレンス化されていない関数も多い
        • マイナー言語の場合は,C/C++言語向けの内容と
          ソースコードを見比べながら試行錯誤…


    面倒ごともありますが,ベタな実装と比較すれば
        画像処理プログラミングが
         かなり楽になります!

                                     9
Android 版 OpenCV
OpenCV for Android
   概要
     OpenCV 2.2 以前でもAndroidで動作したものの…
     これから使うなら 最新版(2.3.1beta2)のPrebuilt
      パッケージがおすすめ

   動作環境
       Android ≧ 2.2 (APIレベル ≧ 8)
        ※ JavaAPIを用いない場合は Android ≧ 1.5 (APIレベル≧3)


   インストール方法
       http://bit.ly/nqPTnO を参照してください。
                                                 11
Android版を使う上でまず考えること
   どちらのAPIを使うか
    ① Java APIを使う
    ② C++ APIを使う (NDK)
    ③ ハイブリッド(①+②)


   カメラ画像をどのように取得するか
    ① Android のカメラ機能
    ② OpenCV のカメラ機能


    ⇒ それぞれ,以降のページで説明します
                          12
Java API for Android
   特徴
       Java上で実装・ビルドする。
        • NDKは不要 
       API呼び出し時のオーバーヘッドが大きい 
        • API内部の処理はNDKでビルド済のため変わらないハズ
     デバッグは楽                        SurfaceView

     PC版とAPI仕様が
      異なる                    行わせたい画像処理 in Java

            オーバーヘッド大

                                  Java API (OpenCV)
         OpenCV for Android
                                Native Library (OpenCV)
                                                          13
C++ API for Android
   特徴
     C++によりネイティブコードでOpenCVを呼び出す
     Java側(UI側)からの呼び出しは,
      JNIラッパーを作成しなければならない 
     NDKでのビルドが必要 
     デバッグが面倒                SurfaceView

     Java側からの呼び出しを        UI側の処理 in Java
      減らすことで,オーバー       JNIラッパー(自作する)
      ヘッドを減らせる 
                        行わせたい画像処理 in C++
     PC版と同じAPIを使える 

           OpenCV for Android   Native Library (OpenCV)

                                                          14
Androidのカメラ機能を使う場合
   Android OSのカメラ    SurfaceView        Activity

    機能を用いてyuv形式
    で取得したのち,         SampleViewBase

    OpenCVのMat型に
    変換する。            Sample1View       Sample1Java

   OS標準のAPIを用いる
    ため,機種
    依存性が小             Mat型変数(mYuv)にカメラ画像のByte配列を格納


   少し遅いかも
                               SurfaceViewに描画するため,
                               Mat型からBitmapを生成して戻る

                                                     15
OpenCVのカメラ機能を使う場合
   OpenCVのカメラ画像                 SurfaceView            Activity

    取得API(highgui.VideoCaputure)
    を用いて画像データを SampleCvViewBase
    取得する。
                                  Sample2View         Sample2View


   機種依存性が高い

                                    VideoCapture.retreive で直接Mat
   処理が軽いかも                         型変数にカメラ画像を取得。




                                          SurfaceViewに描画するため,
                                          Mat型からBitmapを生成して戻る
                                                                    16
リファレンス情報(1/2)
   http://opencv.jp/
       日本語のリファレンスが存在する
        • REFERENCE MANUAL → C++リファレンス
        • COOKBOOK [おすすめ]
     少し情報が古い(Ver2.2相当)
     Java版が無いので、C++版から読み替えが必要


   http://opencv.itseez.com/modules/refman.html
     英語だが最新リファレンス(Ver2.3相当)
     JavaAPIの記述がないので読み替えが必要


                                                   17
リファレンス情報(2/2)
   Javadoc でソースから生成する
       Java API のリファレンスが手に入る
        • クラス構造などは参考になる
       説明はわかりにくい
        • 結局C++リファレンスと
          にらめっこになる
       Javadocの生成方法
        > javadoc –help
        > cd <ソース解凍先>¥OpenCV-2.3.1
        > javadoc -sourcepath src -d javadoc -subpackages org.opencv


   『詳解 OpenCV』(オライリー社)
       画像処理アルゴリズムの考え方も含め
        丁寧に記述されている
       C API (≠C++) のため読み替えがさらに大変
                                                                       18
Androidで実装するときのTIPS
   まずはPC版OpenCVでアルゴリズムを検討し、
    その後Androidに移植すると良さそう。
     OpenCVのライブラリサイズが大きい(5MB強)ため、
      デバッグ時の転送&展開に時間がかかる。
     JavaAPIの情報が少ないため、想定通りに動かな
      い場合の切り分けが難しい。


   端末によってカメラの解像度や写りの質・
    CPU速度などが異なるため、一様には
    動作してくれないことにも注意する。

                                19
Android版OpenCVの実装例




                     20
ドロイドくん追跡カー@KOF2011
11/11~12に開催されたKOF2011
(関西オープンフォーラム) に動態展示しました
全体処理の流れ
 ドロイドくん                                                                           ギアボックス




                                    ②左右モーターの
            内蔵カメラ                    回転速度と
                                     駆動時間を指令




            ①OpenCVで
             ドロイドくんの
Androidケータイ  位置を検出                                                                            Arduino

    http://ja.wikipedia.org/wiki/Arduino , http://www.tamiya.com/japan/products/70168double_gearbox/index.htm
①画像処理
   緑色の領域を抽出し,サイズが最も大きな
    領域をドロイド君人形と認識させる。
    カメラ画像を取得     “色”で分離しやすい
                    指標に変換     (色相)
     RGB→HSV変換
                              (彩度)
    色相,彩度,輝度
                 緑色のピクセルだけ
     で制限をかける      にマークをつける    (輝度)


     ノイズ除去

     領域に分割

     最大の領域を
      見つける
    モータ制御値を       抽出領域の中心が
     生成(&送信)     画面中央に来るように
                                23
ソースコード(画像取得,色抽出,領域分割)




                        24
ソースコード(最大領域の探索)




                  25
②モーターを動かす
          【ハード構成】      【ソフト構成】

                       画像追跡ソフト
          Android端末
                                      OpenCV




                        Microbridge
                                      通信ソケットのようなものを
                USB                   張ってくれます
                                      今回は,左右モーターの回転
          USBホストシールド
                                      時間と回転速度を指令
                                      (Down方向のみ)
           Arduino
          (マイコン基板)     モーター制御ソフト

回転方向の     モータードライバ
選択と,        シールド                      指令された回転時間・速度に
電力増幅                    PWM           なるように,PWMを生成
(約500円)        PWM
          タミヤモーター

                                                  26
ソースコード(指令値の生成と送信)




    バイト配列をsendすれば




                    27
ソースコード(Arduino)

     バイト配列として       データ受信時の
     受信データを読み出せる
                   イベントハンドラ


                              初期化処理




                                      28
実機デモ




       デモ
            29
まとめ



       和歌山県は
      近畿地方です!

                                          30
特別出演:あり太君 http://twitter.com/shokokanko
まとめ <Take2>
   You + Android = Androidはより優秀なWeb端末
   You + Android + OpenCV =
    Androidが簡単に画像処理機能を持てる!
   You + Android + OpenCV + Micro Processor =
    Androidが ”アンドロイド” に進化する!!

                  OpenCVやマイコンで
                  一緒に遊びませんか?
                     →『日本 Android の会 京都支部』
                       http://groups.google.com/group/android-kyoto
                                                                31
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫Yuta Imai
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例Fixstars Corporation
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
 
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法モノビット エンジン
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないことNorishige Fukushima
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
ゲームAI入門(前半)
ゲームAI入門(前半)ゲームAI入門(前半)
ゲームAI入門(前半)Youichiro Miyake
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVMHiroshi Maekawa
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理Norishige Fukushima
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgameSatoshi Yamafuji
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能TomomitsuKusaba
 
つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告Yoshitaka HARA
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?Takuya Ueda
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 

Was ist angesagt? (20)

オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
【CEDEC2013】20対20リアルタイム通信対戦オンラインゲームのサーバ開発&運営技法
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと画像処理ライブラリ OpenCV で 出来ること・出来ないこと
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
ゲームAI入門(前半)
ゲームAI入門(前半)ゲームAI入門(前半)
ゲームAI入門(前半)
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
 
ネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分け
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
マルチコアを用いた画像処理
マルチコアを用いた画像処理マルチコアを用いた画像処理
マルチコアを用いた画像処理
 
C#で速度を極めるいろは
C#で速度を極めるいろはC#で速度を極めるいろは
C#で速度を極めるいろは
 
Imprementation of realtime_networkgame
Imprementation of realtime_networkgameImprementation of realtime_networkgame
Imprementation of realtime_networkgame
 
.NET 7期待の新機能
.NET 7期待の新機能.NET 7期待の新機能
.NET 7期待の新機能
 
つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告つくばチャレンジ2019技術調査報告
つくばチャレンジ2019技術調査報告
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 

Andere mochten auch

Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Hiroshi Yoshida
 
Deflate
DeflateDeflate
Deflate7shi
 
単一物体追跡論文のサーベイ
単一物体追跡論文のサーベイ単一物体追跡論文のサーベイ
単一物体追跡論文のサーベイHitoshi Nishimura
 
Deep learningの軽い紹介
Deep learningの軽い紹介Deep learningの軽い紹介
Deep learningの軽い紹介Yoshihisa Maruya
 
勉強会資料 Distribution
勉強会資料 Distribution勉強会資料 Distribution
勉強会資料 Distributionmiki koganei
 
Compact ordered dict__k_lab_meeting_
Compact ordered dict__k_lab_meeting_Compact ordered dict__k_lab_meeting_
Compact ordered dict__k_lab_meeting_miki koganei
 
Golangにおける端末制御 リッチなターミナルUIの実現方法
Golangにおける端末制御 リッチなターミナルUIの実現方法Golangにおける端末制御 リッチなターミナルUIの実現方法
Golangにおける端末制御 リッチなターミナルUIの実現方法Masashi Shibata
 
ARもVRもMRもまとめてドーン
ARもVRもMRもまとめてドーンARもVRもMRもまとめてドーン
ARもVRもMRもまとめてドーンSatoshi Maemoto
 
センサー・VR・MR 基本とオススメ
センサー・VR・MR 基本とオススメセンサー・VR・MR 基本とオススメ
センサー・VR・MR 基本とオススメSatoshi Maemoto
 
悪意ないユーザに配慮した不正クライアントの排除
悪意ないユーザに配慮した不正クライアントの排除悪意ないユーザに配慮した不正クライアントの排除
悪意ないユーザに配慮した不正クライアントの排除klab-koike-r
 
負荷試験、どうしてる?(公開版)
負荷試験、どうしてる?(公開版)負荷試験、どうしてる?(公開版)
負荷試験、どうしてる?(公開版)miki koganei
 
Raspberry piと.net coreのstandardな関係
Raspberry piと.net coreのstandardな関係Raspberry piと.net coreのstandardな関係
Raspberry piと.net coreのstandardな関係Masuda Tomoaki
 
MS COCO Dataset Introduction
MS COCO Dataset IntroductionMS COCO Dataset Introduction
MS COCO Dataset IntroductionShinagawa Seitaro
 
ARもVRもMRもまとめてドドンドーン!
ARもVRもMRもまとめてドドンドーン!ARもVRもMRもまとめてドドンドーン!
ARもVRもMRもまとめてドドンドーン!Satoshi Maemoto
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Yasutomo Kawanishi
 

Andere mochten auch (19)

OpenCV 3.0 on iOS
OpenCV 3.0 on iOSOpenCV 3.0 on iOS
OpenCV 3.0 on iOS
 
OpenCVの基礎
OpenCVの基礎OpenCVの基礎
OpenCVの基礎
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
 
Deflate
DeflateDeflate
Deflate
 
単一物体追跡論文のサーベイ
単一物体追跡論文のサーベイ単一物体追跡論文のサーベイ
単一物体追跡論文のサーベイ
 
Deep learningの軽い紹介
Deep learningの軽い紹介Deep learningの軽い紹介
Deep learningの軽い紹介
 
FPGAって、何?
FPGAって、何?FPGAって、何?
FPGAって、何?
 
勉強会資料 Distribution
勉強会資料 Distribution勉強会資料 Distribution
勉強会資料 Distribution
 
Compact ordered dict__k_lab_meeting_
Compact ordered dict__k_lab_meeting_Compact ordered dict__k_lab_meeting_
Compact ordered dict__k_lab_meeting_
 
Golangにおける端末制御 リッチなターミナルUIの実現方法
Golangにおける端末制御 リッチなターミナルUIの実現方法Golangにおける端末制御 リッチなターミナルUIの実現方法
Golangにおける端末制御 リッチなターミナルUIの実現方法
 
ARもVRもMRもまとめてドーン
ARもVRもMRもまとめてドーンARもVRもMRもまとめてドーン
ARもVRもMRもまとめてドーン
 
センサー・VR・MR 基本とオススメ
センサー・VR・MR 基本とオススメセンサー・VR・MR 基本とオススメ
センサー・VR・MR 基本とオススメ
 
悪意ないユーザに配慮した不正クライアントの排除
悪意ないユーザに配慮した不正クライアントの排除悪意ないユーザに配慮した不正クライアントの排除
悪意ないユーザに配慮した不正クライアントの排除
 
負荷試験、どうしてる?(公開版)
負荷試験、どうしてる?(公開版)負荷試験、どうしてる?(公開版)
負荷試験、どうしてる?(公開版)
 
Raspberry piと.net coreのstandardな関係
Raspberry piと.net coreのstandardな関係Raspberry piと.net coreのstandardな関係
Raspberry piと.net coreのstandardな関係
 
MS COCO Dataset Introduction
MS COCO Dataset IntroductionMS COCO Dataset Introduction
MS COCO Dataset Introduction
 
ARもVRもMRもまとめてドドンドーン!
ARもVRもMRもまとめてドドンドーン!ARもVRもMRもまとめてドドンドーン!
ARもVRもMRもまとめてドドンドーン!
 
Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~Pythonによる機械学習入門 ~Deep Learningに挑戦~
Pythonによる機械学習入門 ~Deep Learningに挑戦~
 
一般向けのDeep Learning
一般向けのDeep Learning一般向けのDeep Learning
一般向けのDeep Learning
 

Ähnlich wie OpenCVをAndroidで動かしてみた

OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメOpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメMasaki Otsuki
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏Developers Summit
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組みKouji Matsui
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介NilOne Ltd.
 
01 idea table3.1(up)
01 idea table3.1(up)01 idea table3.1(up)
01 idea table3.1(up)umisuzume
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応Masaru Horioka
 
01 idea table3.2
01 idea table3.201 idea table3.2
01 idea table3.2umisuzume
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構Ryosuke MATSUMOTO
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows AzureMicrosoft
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)masanori kataoka
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution EngineAsuka Nakajima
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料OCHI Shuji
 
組込みAndroid入門実習
組込みAndroid入門実習組込みAndroid入門実習
組込みAndroid入門実習ksk sue
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPUTakuro Iizuka
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~Saki Homma
 

Ähnlich wie OpenCVをAndroidで動かしてみた (20)

OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメOpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメ
 
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
01 idea table3.1(up)
01 idea table3.1(up)01 idea table3.1(up)
01 idea table3.1(up)
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応
 
01 idea table3.2
01 idea table3.201 idea table3.2
01 idea table3.2
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
ロボット用Open Source Software
ロボット用Open Source Softwareロボット用Open Source Software
ロボット用Open Source Software
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
PHP on Windows Azure
PHP on Windows AzurePHP on Windows Azure
PHP on Windows Azure
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)Agileツール適合化分科会(構成管理・ビルドツール)
Agileツール適合化分科会(構成管理・ビルドツール)
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
組込みAndroid入門実習
組込みAndroid入門実習組込みAndroid入門実習
組込みAndroid入門実習
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
実践 Web App for Containers! ~コンテナ開発の基礎からDevOps環境の構築まで~
 
Android0422
Android0422Android0422
Android0422
 

Kürzlich hochgeladen

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Kürzlich hochgeladen (9)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

OpenCVをAndroidで動かしてみた

  • 1. 日本Androidの会 京都支部 第3回 勉強会 (2011-12-03) OpenCV を Android で動かしてみた Toru UENOYAMA @ 日本Androidの会 京都支部
  • 2. 自己紹介  名前  上野山 徹 (うえのやま とおる)  Google+ : Toru UENOYAMA  出身  和歌山県 • みかん と 梅干し と タチウオ と カレー で有名 和歌山県  仕事  京都の電機メーカーで (組み込み + 画像処理)/2なソフト開発してます
  • 4. OpenCVとは  オープンソースの画像処理ライブラリ  コンピュータビジョンに関する 数多くの機能を提供する  最新研究の画像処理技術やGPGPUにも対応  言語インターフェイス • 元はC言語向け • 今では C++, Python, Ruby, Java などなど  対応OS • Windows, MacOS, Linux, FreeBSD, iOS, Android など ホビーユースから学術研究用途まで 幅広く使える画像処理ライブラリです! 4
  • 5. OpenCVの機能 各種フィルタなど 幾何表現や 汎用画像処理 画像特徴量 複数カメラで 領域分割・切出し の三次元復元 色変換・形状変換 フィッティング 機械学習,形状 認識,顔検出 移動物体の追跡 http://opencv.willowgarage.com/wiki/ 5
  • 6. OpenCV の実用例  DARPA Grand Challenge  制限時間内に車両自律走行で 走破させる競技  多くのチームが OpenCVを使用  一部の画像処理検査装置  研究機関でのアルゴリズム評価ソフト http://en.wikipedia.org/wiki/DARPA_Grand_Challenge http://www.cengen.com/content/darpa-grand-challenge-2004 6
  • 7. OpenCV の 歴史  略歴  1999年 Intelにて開発がスタート  2006年 正式版(1.0)リリース  2008年 WillowGarage(米ベンチャー)が開発を引継ぐ  バージョン Ver 年月 主な変更内容 1.0 2006年10月 正式リリース 1.1α 2008年10月 バグ修正,機能追加 2.0 2009年9月 C++インターフェイス追加 2.1 2010年4月 機能追加,TBB対応 2.2 2010年12月 ライブラリ構成の見直し(細分化), CUDA対応 2.3 2011年6月 Androidに正式対応,機能追加 2.3.1 2011年7月 Android版のAPI充実 7
  • 8. OpenCVの特徴  実装機能が豊富  画像処理に関することはほぼ網羅されている • 新機能もどんどん追加されている  豊富すぎて必要な機能を探すのが大変だったり  機能の粒度が小さい  必要な機能だけを組み合わせて使える • (無駄がない)  ほしい機能を作るためには,関連する関数を 適切に組み合わせないといけない 8
  • 9. OpenCVの特徴  ドキュメントが全体的に不足  リファレンスに行間が多すぎ  リファレンス化されていない関数も多い • マイナー言語の場合は,C/C++言語向けの内容と ソースコードを見比べながら試行錯誤… 面倒ごともありますが,ベタな実装と比較すれば 画像処理プログラミングが かなり楽になります! 9
  • 11. OpenCV for Android  概要  OpenCV 2.2 以前でもAndroidで動作したものの…  これから使うなら 最新版(2.3.1beta2)のPrebuilt パッケージがおすすめ  動作環境  Android ≧ 2.2 (APIレベル ≧ 8) ※ JavaAPIを用いない場合は Android ≧ 1.5 (APIレベル≧3)  インストール方法  http://bit.ly/nqPTnO を参照してください。 11
  • 12. Android版を使う上でまず考えること  どちらのAPIを使うか ① Java APIを使う ② C++ APIを使う (NDK) ③ ハイブリッド(①+②)  カメラ画像をどのように取得するか ① Android のカメラ機能 ② OpenCV のカメラ機能 ⇒ それぞれ,以降のページで説明します 12
  • 13. Java API for Android  特徴  Java上で実装・ビルドする。 • NDKは不要   API呼び出し時のオーバーヘッドが大きい  • API内部の処理はNDKでビルド済のため変わらないハズ  デバッグは楽  SurfaceView  PC版とAPI仕様が 異なる  行わせたい画像処理 in Java オーバーヘッド大 Java API (OpenCV) OpenCV for Android Native Library (OpenCV) 13
  • 14. C++ API for Android  特徴  C++によりネイティブコードでOpenCVを呼び出す  Java側(UI側)からの呼び出しは, JNIラッパーを作成しなければならない   NDKでのビルドが必要   デバッグが面倒  SurfaceView  Java側からの呼び出しを UI側の処理 in Java 減らすことで,オーバー JNIラッパー(自作する) ヘッドを減らせる  行わせたい画像処理 in C++  PC版と同じAPIを使える  OpenCV for Android Native Library (OpenCV) 14
  • 15. Androidのカメラ機能を使う場合  Android OSのカメラ SurfaceView Activity 機能を用いてyuv形式 で取得したのち, SampleViewBase OpenCVのMat型に 変換する。 Sample1View Sample1Java  OS標準のAPIを用いる ため,機種 依存性が小 Mat型変数(mYuv)にカメラ画像のByte配列を格納  少し遅いかも SurfaceViewに描画するため, Mat型からBitmapを生成して戻る 15
  • 16. OpenCVのカメラ機能を使う場合  OpenCVのカメラ画像 SurfaceView Activity 取得API(highgui.VideoCaputure) を用いて画像データを SampleCvViewBase 取得する。 Sample2View Sample2View  機種依存性が高い VideoCapture.retreive で直接Mat  処理が軽いかも 型変数にカメラ画像を取得。 SurfaceViewに描画するため, Mat型からBitmapを生成して戻る 16
  • 17. リファレンス情報(1/2)  http://opencv.jp/  日本語のリファレンスが存在する • REFERENCE MANUAL → C++リファレンス • COOKBOOK [おすすめ]  少し情報が古い(Ver2.2相当)  Java版が無いので、C++版から読み替えが必要  http://opencv.itseez.com/modules/refman.html  英語だが最新リファレンス(Ver2.3相当)  JavaAPIの記述がないので読み替えが必要 17
  • 18. リファレンス情報(2/2)  Javadoc でソースから生成する  Java API のリファレンスが手に入る • クラス構造などは参考になる  説明はわかりにくい • 結局C++リファレンスと にらめっこになる  Javadocの生成方法 > javadoc –help > cd <ソース解凍先>¥OpenCV-2.3.1 > javadoc -sourcepath src -d javadoc -subpackages org.opencv  『詳解 OpenCV』(オライリー社)  画像処理アルゴリズムの考え方も含め 丁寧に記述されている  C API (≠C++) のため読み替えがさらに大変 18
  • 19. Androidで実装するときのTIPS  まずはPC版OpenCVでアルゴリズムを検討し、 その後Androidに移植すると良さそう。  OpenCVのライブラリサイズが大きい(5MB強)ため、 デバッグ時の転送&展開に時間がかかる。  JavaAPIの情報が少ないため、想定通りに動かな い場合の切り分けが難しい。  端末によってカメラの解像度や写りの質・ CPU速度などが異なるため、一様には 動作してくれないことにも注意する。 19
  • 22. 全体処理の流れ ドロイドくん ギアボックス ②左右モーターの 内蔵カメラ 回転速度と 駆動時間を指令 ①OpenCVで ドロイドくんの Androidケータイ 位置を検出 Arduino http://ja.wikipedia.org/wiki/Arduino , http://www.tamiya.com/japan/products/70168double_gearbox/index.htm
  • 23. ①画像処理  緑色の領域を抽出し,サイズが最も大きな 領域をドロイド君人形と認識させる。 カメラ画像を取得 “色”で分離しやすい 指標に変換 (色相) RGB→HSV変換 (彩度) 色相,彩度,輝度 緑色のピクセルだけ で制限をかける にマークをつける (輝度) ノイズ除去 領域に分割 最大の領域を 見つける モータ制御値を 抽出領域の中心が 生成(&送信) 画面中央に来るように 23
  • 26. ②モーターを動かす 【ハード構成】 【ソフト構成】 画像追跡ソフト Android端末 OpenCV Microbridge 通信ソケットのようなものを USB 張ってくれます 今回は,左右モーターの回転 USBホストシールド 時間と回転速度を指令 (Down方向のみ) Arduino (マイコン基板) モーター制御ソフト 回転方向の モータードライバ 選択と, シールド 指令された回転時間・速度に 電力増幅 PWM なるように,PWMを生成 (約500円) PWM タミヤモーター 26
  • 27. ソースコード(指令値の生成と送信) バイト配列をsendすれば 27
  • 28. ソースコード(Arduino) バイト配列として データ受信時の 受信データを読み出せる イベントハンドラ 初期化処理 28
  • 29. 実機デモ デモ 29
  • 30. まとめ 和歌山県は 近畿地方です! 30 特別出演:あり太君 http://twitter.com/shokokanko
  • 31. まとめ <Take2>  You + Android = Androidはより優秀なWeb端末  You + Android + OpenCV = Androidが簡単に画像処理機能を持てる!  You + Android + OpenCV + Micro Processor = Androidが ”アンドロイド” に進化する!! OpenCVやマイコンで 一緒に遊びませんか? →『日本 Android の会 京都支部』 http://groups.google.com/group/android-kyoto 31