SlideShare a Scribd company logo
1 of 18
Download to read offline
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

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

What's hot (20)

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

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

Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiKen'ichi Sakiyama
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Yusuke Wada
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系祐司 伊藤
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools KnowledgeShinobu Okano
 
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016RWSJapan
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Takashi Takizawa
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしようYasuhiro Yoshimura
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見るkishima7
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発Tatsumi Naganuma
 
モバイルVR「Daydream」について
モバイルVR「Daydream」についてモバイルVR「Daydream」について
モバイルVR「Daydream」についてSatoshi Noda
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法João Orui
 
Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!Kazuaki Ueda
 
インストールリファラでハマった話
インストールリファラでハマった話インストールリファラでハマった話
インストールリファラでハマった話shinya sakemoto
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~normalian
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 

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

Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapiJavaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
 
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
Beginners scala 20121113
Beginners scala 20121113Beginners scala 20121113
Beginners scala 20121113
 
つぶLT20121215
つぶLT20121215つぶLT20121215
つぶLT20121215
 
OSC福岡 20111203
OSC福岡 20111203OSC福岡 20111203
OSC福岡 20111203
 
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
 
Android Dev Tools Knowledge
Android Dev Tools KnowledgeAndroid Dev Tools Knowledge
Android Dev Tools Knowledge
 
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
TotalViewを使ったFOCUSスパコンでのデバッグ体験 2016
 
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
 
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
モバイルVR「Daydream」について
モバイルVR「Daydream」についてモバイルVR「Daydream」について
モバイルVR「Daydream」について
 
SensorBeeのご紹介
SensorBeeのご紹介SensorBeeのご紹介
SensorBeeのご紹介
 
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
2016-11-28 開発・改善ワークフローにおけるDeployGate利用方法
 
Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
インストールリファラでハマった話
インストールリファラでハマった話インストールリファラでハマった話
インストールリファラでハマった話
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 

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