SlideShare a Scribd company logo
OpenCV4Androidで画像処理アプリのススメ




2013/01/26                       1
自己紹介
• 名前:大槻 正樹
• TwitterID:@nekomeshi312         こんなアイコンです→

• 仕事:某メーカ所属
             ・・・仕事はAndroidとは特に関係のないSunday Programmerです。
             ・・・こんなアプリ作ってます




2013/01/26                                                2
OpenCVって?




2013/01/26               3
OpenCVって?
• OpenCV ・・・ Open Source Computer Visionの略
        画像認識に関する500以上の画像処理のライブラリ
• Linux、Windows、Android、iOS等をサポート
• 元はC言語 ・・今ではC++, Java, Pythonなどもサポート
• BSDライセンス
• 2013/1/26 現在のバージョン
      – 2.4.3

       企業や大学での研究でも広く使われている
       画像処理ライブラリ

             今でも新しく開発された画像処理アルゴリズム
                が頻繁に追加&VerUpされている。


2013/01/26                                   4
どんなことができる?
               特徴点検出


 領域分割

                               3次元計測




   画像変換




 機械学習 /
 画像認識
               トラッキング
                        などなど・・・・


2013/01/26                             5
とりあえずやってみた




2013/01/26                6
カメラ入力の色変換
• 行数にしてたった13行



      カメラのキャプチャごとに
       呼ばれるコールバック
                     RGBをHSVに変換




                             色相を回す

                             HSVをRGBに戻す




2013/01/26                                7
オブジェクト認識
• 約100行
  けど大事な点は以下の三箇所のみ




                         局所特徴量計算




                         特徴点マッチング




                     不適切なマッチング
                      のふるい落とし


2013/01/26                          8
OpenCVの歴史
•    1999:プロジェクト開始
•    2000/6:α版公開
•    2006/10:Ver1.0公開
•    2009/9:Ver2.0公開 ・・・C++対応
•    2010/4:Ver2.1公開
•    2010/12:Ver2.2公開 ・・・Android向けにbuildできる(NDKのみ)
•    2011/7:Ver2.3公開
•    2011/8:Ver2.3.1公開 ・・・Android Java APIに対応,
                          Prebuildパッケージでの配布開始
•    2012/5:Ver2.4公開
•    2012/6:Ver2.4.1公開
•    2012/7:Ver2.4.2公開 ・・・OpenCV Managerでのライブラリ配布開始
•    2012/11:Ver2.4.3公開 ←イマココ
OpenCVのChangeLogはここを参照                                                   これについては後で
http://code.opencv.org/projects/opencv/wiki/ChangeLog#243
OpenCV4Androidについてはここを参照
http://code.opencv.org/projects/opencv/wiki/Android_Release_Notes#2432

2013/01/26                                                                           9
OpenCV4Androidのダウンロード&インストール
  このサイトが良くまとまっている
    http://p.tl/ffGt




NDKのインストールが必要。
2013/1/19現在Android NDK r8d をサポート
2013/01/26                            10
OpenCV4Androidを使うには
  ライブラリを使うには二通りの方法
                         非推奨
1)ライブラリをアプリのAPKに含める
2)OpenCVManagerを使う・・アプリ実行時にインストールされていなければ
   GooglePlayに飛んでダウンロードする




2013/01/26                                  11
必要なコードはこれだけ
                                OpenCVロード


                     ロードに成功/失敗した時に
                     呼ばれるコールバックの指定



                                    エラー時の処理




                          成功時の処理
                   GooglePlayからOpenCVManagerのインス
                         トールが成功した時もこっち

2013/01/26                                         12
OpenCV4Androidの良い点/悪い点
C++でもJavaでも書ける
• Java
      – 良い点
                             Nativeのラッパなので、頻繁に呼ぶ
             • デバッグが楽         とJNIのオーバヘッドが効いてくる
      – 悪い点
             • 遅い
             • 世の中にあるドキュメントがほとんどC++向け。結構書き方が違う
             • サポートされていないAPIがちょこちょこある
• C++
      – 良い点
             • 速い
             • PC環境向けのソースコードが結構そのまま動く
      – 悪い点
             • デバッグがめんどくさい



2013/01/26                                         13
おすすめの作り方
C++苦手な人向け:とにかくJavaで書く。
      – しばらく書いていると、C++とJavaの書き方の違いに慣れてくる
      – ひと通りJavaで書いて、高速化の必要なところだけNDKで書き直す


C++得意な人向け:一旦PC環境でC++で動くソースを作る。
      – 画像処理の途中経過をたくさんウィンドウを並べて確認できるのでデ
        バッグが楽
      – GUI周り以外の画像処理ルーチンは、NDKで結構そのまま動く


                100%Java

                                    一部NDK

                100%Java


2013/01/26                                  14
資料など
Android/Java向けのOpenCVの資料などは、ちょっとわかりませ
ん。
●Webサイト
      http://opencv.jp/                   OpenCVのDL/更新情報はここから
      http://opencv.jp/opencv-2svn/cpp/ リファレンス
      http://opencv.jp/cookbook/          逆引きリファレンス
      http://imagingsolution.net/programming/opencv/  画像処理一般
●書籍
      OpenCV 2 プログラミングブック
                   http://amzn.to/SOm4ME
       インストールから実践まで おすすめ
      詳解 OpenCV
                http://amzn.to/SOmeDR
       詳しいがちょっと古い
他にもいろいろあります。

2013/01/26                                                      15
じつは・・・
今回のLTよりもっと良い紹介資料があります。
      何のために今回LTしたのやらwww

http://www.slideshare.net/ToruUenoyama/opencvandroid




2013/01/26                                             16
今日のソース
• GitHubで公開しています
     よろしければ見てみてください。

                   http://p.tl/2GRP




                   http://p.tl/zpOM




                   http://p.tl/V-nI




2013/01/26                            17
FIN

2013/01/26         18

More Related Content

What's hot (20)

PDF
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Yasuhiro Yoshimura
 
PDF
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
Yasuhiro Yoshimura
 
PDF
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Saya Katafuchi
 
PDF
オープンソースで作るスマホ文字認識アプリ
陽平 山口
 
PDF
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
Yasuhiro Yoshimura
 
PDF
Synthesijer jjug 201504_01
Takefumi MIYOSHI
 
KEY
SurfaceTextureとシェーダを使って遊んでみる
Tatsuya Matsumoto
 
PDF
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Hiroshi Yoshida
 
PDF
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
 
PDF
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
marsee101
 
KEY
Cq tse-fm3セミナー資料
Masaki Muranaka
 
KEY
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
 
PDF
20120706-readablecode
Masanori Kado
 
KEY
初心者向けAndroidゲーム開発ノウハウ
Kentarou Mukunasi
 
PDF
これからの「async/await」の話をしよう
Kouji Matsui
 
PDF
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
 
PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
 
PDF
Jenkins に XFD を追加してみると
Kiro Harada
 
PDF
テストを書こう、Unity編
Hiroto Imoto
 
PPTX
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
Yasuhiro Yoshimura
 
【第33回コンピュータビジョン勉強会@関東】OpenVX、 NVIDIA VisionWorks使ってみた
Yasuhiro Yoshimura
 
Handson opencv! 画像処理ライブラリを使って面白いプログラムを作ろう!その2
Saya Katafuchi
 
オープンソースで作るスマホ文字認識アプリ
陽平 山口
 
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
Yasuhiro Yoshimura
 
Synthesijer jjug 201504_01
Takefumi MIYOSHI
 
SurfaceTextureとシェーダを使って遊んでみる
Tatsuya Matsumoto
 
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
Hiroshi Yoshida
 
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
UnityTechnologiesJapan002
 
SDSoC勉強会_170128_スライド「SDx 2016.3のプラグマによるハードウェアと性能」
marsee101
 
Cq tse-fm3セミナー資料
Masaki Muranaka
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
Masaki Muranaka
 
20120706-readablecode
Masanori Kado
 
初心者向けAndroidゲーム開発ノウハウ
Kentarou Mukunasi
 
これからの「async/await」の話をしよう
Kouji Matsui
 
Pythonで始めるWebアプリケーション開発
Takahiro Kubo
 
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
 
Jenkins に XFD を追加してみると
Kiro Harada
 
テストを書こう、Unity編
Hiroto Imoto
 
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 

Similar to OpenCV4Androidで画像処理アプリのススメ (20)

PDF
vImageのススメ
Shuichi Tsutsumi
 
PDF
vImageのススメ(改訂版)
Shuichi Tsutsumi
 
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
 
PDF
OpenCV 3.0 on iOS
Shuichi Tsutsumi
 
PDF
OpenCVの入り口
cct-inc
 
PDF
IbisPaintのOpenGLES2.0
Eiji Kamiya
 
PDF
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Atsushi Tadokoro
 
PDF
Hands On OpenCV! 画像処理ライブラリを使って面白いプログラムを作ろう!
Saya Katafuchi
 
PDF
OpenCVで作るスタンプAR
Takashi Yoshinaga
 
ODP
130329 04
openrtm
 
ODP
20130329 rtm4
openrtm
 
PDF
OpenCV2.2 Install Guide ver.0.5
Tsukasa Sugiura
 
PDF
ロボット用Open Source Software
たけおか しょうぞう
 
PPTX
2012 kanemotolablecture1
ytanno
 
PDF
openFrameworks Workshop in Kanazawa v001
Teruaki Tsubokura
 
PPTX
Javaで簡単にgpgpu aparapi
Ken'ichi Sakiyama
 
PPTX
組込みAndroid入門実習
ksk sue
 
PDF
130710 02
openrtm
 
PDF
OpenCV/ARCore/Unityで作る塗り絵AR
Takashi Yoshinaga
 
vImageのススメ
Shuichi Tsutsumi
 
vImageのススメ(改訂版)
Shuichi Tsutsumi
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
 
OpenCV 3.0 on iOS
Shuichi Tsutsumi
 
OpenCVの入り口
cct-inc
 
IbisPaintのOpenGLES2.0
Eiji Kamiya
 
Media Art II 2013 第6回:openFrameworks Addonを使う 2 - ofxOpenCV と ofxCv
Atsushi Tadokoro
 
Hands On OpenCV! 画像処理ライブラリを使って面白いプログラムを作ろう!
Saya Katafuchi
 
OpenCVで作るスタンプAR
Takashi Yoshinaga
 
130329 04
openrtm
 
20130329 rtm4
openrtm
 
OpenCV2.2 Install Guide ver.0.5
Tsukasa Sugiura
 
ロボット用Open Source Software
たけおか しょうぞう
 
2012 kanemotolablecture1
ytanno
 
openFrameworks Workshop in Kanazawa v001
Teruaki Tsubokura
 
Javaで簡単にgpgpu aparapi
Ken'ichi Sakiyama
 
組込みAndroid入門実習
ksk sue
 
130710 02
openrtm
 
OpenCV/ARCore/Unityで作る塗り絵AR
Takashi Yoshinaga
 
Ad

OpenCV4Androidで画像処理アプリのススメ

  • 2. 自己紹介 • 名前:大槻 正樹 • TwitterID:@nekomeshi312 こんなアイコンです→ • 仕事:某メーカ所属 ・・・仕事はAndroidとは特に関係のないSunday Programmerです。 ・・・こんなアプリ作ってます 2013/01/26 2
  • 4. OpenCVって? • OpenCV ・・・ Open Source Computer Visionの略 画像認識に関する500以上の画像処理のライブラリ • Linux、Windows、Android、iOS等をサポート • 元はC言語 ・・今ではC++, Java, Pythonなどもサポート • BSDライセンス • 2013/1/26 現在のバージョン – 2.4.3 企業や大学での研究でも広く使われている 画像処理ライブラリ 今でも新しく開発された画像処理アルゴリズム が頻繁に追加&VerUpされている。 2013/01/26 4
  • 5. どんなことができる? 特徴点検出 領域分割 3次元計測 画像変換 機械学習 / 画像認識 トラッキング などなど・・・・ 2013/01/26 5
  • 7. カメラ入力の色変換 • 行数にしてたった13行 カメラのキャプチャごとに 呼ばれるコールバック RGBをHSVに変換 色相を回す HSVをRGBに戻す 2013/01/26 7
  • 8. オブジェクト認識 • 約100行 けど大事な点は以下の三箇所のみ 局所特徴量計算 特徴点マッチング 不適切なマッチング のふるい落とし 2013/01/26 8
  • 9. OpenCVの歴史 • 1999:プロジェクト開始 • 2000/6:α版公開 • 2006/10:Ver1.0公開 • 2009/9:Ver2.0公開 ・・・C++対応 • 2010/4:Ver2.1公開 • 2010/12:Ver2.2公開 ・・・Android向けにbuildできる(NDKのみ) • 2011/7:Ver2.3公開 • 2011/8:Ver2.3.1公開 ・・・Android Java APIに対応, Prebuildパッケージでの配布開始 • 2012/5:Ver2.4公開 • 2012/6:Ver2.4.1公開 • 2012/7:Ver2.4.2公開 ・・・OpenCV Managerでのライブラリ配布開始 • 2012/11:Ver2.4.3公開 ←イマココ OpenCVのChangeLogはここを参照 これについては後で http://code.opencv.org/projects/opencv/wiki/ChangeLog#243 OpenCV4Androidについてはここを参照 http://code.opencv.org/projects/opencv/wiki/Android_Release_Notes#2432 2013/01/26 9
  • 10. OpenCV4Androidのダウンロード&インストール このサイトが良くまとまっている http://p.tl/ffGt NDKのインストールが必要。 2013/1/19現在Android NDK r8d をサポート 2013/01/26 10
  • 11. OpenCV4Androidを使うには ライブラリを使うには二通りの方法 非推奨 1)ライブラリをアプリのAPKに含める 2)OpenCVManagerを使う・・アプリ実行時にインストールされていなければ GooglePlayに飛んでダウンロードする 2013/01/26 11
  • 12. 必要なコードはこれだけ OpenCVロード ロードに成功/失敗した時に 呼ばれるコールバックの指定 エラー時の処理 成功時の処理 GooglePlayからOpenCVManagerのインス トールが成功した時もこっち 2013/01/26 12
  • 13. OpenCV4Androidの良い点/悪い点 C++でもJavaでも書ける • Java – 良い点 Nativeのラッパなので、頻繁に呼ぶ • デバッグが楽 とJNIのオーバヘッドが効いてくる – 悪い点 • 遅い • 世の中にあるドキュメントがほとんどC++向け。結構書き方が違う • サポートされていないAPIがちょこちょこある • C++ – 良い点 • 速い • PC環境向けのソースコードが結構そのまま動く – 悪い点 • デバッグがめんどくさい 2013/01/26 13
  • 14. おすすめの作り方 C++苦手な人向け:とにかくJavaで書く。 – しばらく書いていると、C++とJavaの書き方の違いに慣れてくる – ひと通りJavaで書いて、高速化の必要なところだけNDKで書き直す C++得意な人向け:一旦PC環境でC++で動くソースを作る。 – 画像処理の途中経過をたくさんウィンドウを並べて確認できるのでデ バッグが楽 – GUI周り以外の画像処理ルーチンは、NDKで結構そのまま動く 100%Java 一部NDK 100%Java 2013/01/26 14
  • 15. 資料など Android/Java向けのOpenCVの資料などは、ちょっとわかりませ ん。 ●Webサイト http://opencv.jp/ OpenCVのDL/更新情報はここから http://opencv.jp/opencv-2svn/cpp/ リファレンス http://opencv.jp/cookbook/ 逆引きリファレンス http://imagingsolution.net/programming/opencv/ 画像処理一般 ●書籍 OpenCV 2 プログラミングブック http://amzn.to/SOm4ME インストールから実践まで おすすめ 詳解 OpenCV http://amzn.to/SOmeDR 詳しいがちょっと古い 他にもいろいろあります。 2013/01/26 15
  • 16. じつは・・・ 今回のLTよりもっと良い紹介資料があります。 何のために今回LTしたのやらwww http://www.slideshare.net/ToruUenoyama/opencvandroid 2013/01/26 16
  • 17. 今日のソース • GitHubで公開しています よろしければ見てみてください。 http://p.tl/2GRP http://p.tl/zpOM http://p.tl/V-nI 2013/01/26 17