AndroidStudio で OpenCV をインポートする
の続きです。
概要
Android 用 OpenCV には、
8個のサンプルが同封されている。
これを試す。
- tutorial-1-camerapreview
- tutorial-2-mixedprocessing
- tutorial-3-cameracontrol
- image-manipulations
- 15-puzzle
- color-blob-detection
- camera-calibration
- face-detection
tutorial-1-camerapreview
基本となるサンプルなので、別の記事で解説する。
Android で OpenCV のサンプル camerapreview を試す
tutorial-2-mixedprocessing
OpenCVの Java API と Native API の2つの方法で、
カメラからの画像を変換して、表示する。
Native API を使うサンプルなので、別の記事で解説する。
Android で OpenCV のサンプル mixedprocessing を試す
tutorial-3-cameracontrol
OpenCV の Java API を使って、
Androidアプリでカメラを操作する方法を示す。
下記の機能がある。
- カメラの Color Effect を有効にする。
- カメラのプレビュー解像度を変更する。
- カメラ画像をキャプチャしてファイルに保存する。
カメラの Color Effect には、下記の選択肢がある。
- none
- mono
- negative
- solarize
- sepia
- posterize
- whiteboard
- blackboard
- aqua
注意:
これらの機能は API 21以降で、廃止予定 (Deprecated) になった旧来の Camera API により実現される。
サンプルコードはこちら
https://github.com/ohwada/Android_Samples/tree/master/Opencv43
Camera2 API を使って同様の機能を実現する方法は、
下記の記事を参照ください。
Android の Camera2 API を使って Color Effect する
image-manipulations
複数のフィルターをサポートし、色空間の変換とヒストグラムの操作を示す。
下記の選択肢がある
-
Preview RGBA
-
Histograms
-
Canny
キャニー ( Canny) 法によりエッジを検出して描画する -
Sobel
ソーベル ( Sobel) 法によりエッジを検出して描画する -
Sepia
-
Zoom
-
Pixelize
モザイク処理 -
Posterize
階調変更
サンプルコードはこちら
https://github.com/ohwada/Android_Samples/tree/master/Opencv45
15-puzzle
メニューは下記の2つ
- Show/hide tile numbers
- Start new game
画像の分割には、Mat#submat を使用する。
タイル画像の中央に赤い文字でタイル番号。
タイル画像の境に緑の線
サンプルコードはこちら
https://github.com/ohwada/Android_Samples/tree/master/Opencv44
color-blob-detection
Blobは、いくつかの共通のプロパティ(グレースケール値など)を共有する画素の集合です
このサンプルは、タッチされた場所の色と同じ色の領域を検出し、
領域に輪郭を描画する。
InRange で、同じ色の領域を検出する
findContours で、輪郭を検出する
drawContours で、輪郭を描画する
サンプルコードはこちら
https://github.com/ohwada/Android_Samples/tree/master/Opencv46
camera-calibration
カメラの歪みを較正する
このサンプルは、下記を基にしている。
Camera calibration With OpenCV
使い方
OpenCV非対称円グリッドパターン11x4 を使用する。
https://github.com/opencv/opencv/blob/3.4/doc/acircles_pattern.png
グリッドパターンを検出すると、ハイライト表示される。
グリッドパターンを様々な距離、角度から画面をタッチして、キャプチャーする。
メニューバーの「calibrate」ボタンを押す。
結果として、5つの歪み係数が得られる。
プレビューモードは3通りある。
- Calibration
グリッドパターンを検出してハイライト表示する - Undistortion
歪みを較正した画像を表示する - Comparison
元の画像と歪みを較正した画像を並べて表示する
サンプルコードはこちら
https://github.com/ohwada/Android_Samples/tree/master/Opencv47
face-detection
別の記事で解説する。
https://qiita.com/ohwada/items/d4cae2924aabe18cc9c4