More Related Content More from Takao Sumitomo (20) CameraXとMLKitの関係や如何に!?2. 2019-05-15 potatotips #61 @cattaka_net
自己紹介
●
住友 孝郎(Takao Sumitomo)
●
Wantedly, Inc. 所属
●
Androidアプリを主に担当
●
@cattaka_net
(アイコンは気分で変わる)
11. 2019-05-15 potatotips #61 @cattaka_net
Camera 2 APIの辛み
カメラを開く
openCamera
出力先の準備
ImageReader
TextureView
セッションを作る
createCaptureSession
12. 2019-05-15 potatotips #61 @cattaka_net
Camera 2 APIの辛み
カメラを開く
openCamera
出力先の準備
ImageReader
TextureView
セッションを作る
createCaptureSession
キャプチャー開始
startCaptureRequest
13. 2019-05-15 potatotips #61 @cattaka_net
Camera 2 APIの辛み
カメラを開く
openCamera
出力先の準備
ImageReader
TextureView
セッションを作る
createCaptureSession
キャプチャー開始
startCaptureRequest
全部コールバック!
14. 2019-05-15 potatotips #61 @cattaka_net
Camera 2 APIの辛み
カメラを開く
openCamera
出力先の準備
ImageReader
TextureView
セッションを作る
createCaptureSession
キャプチャー開始
startCaptureRequest
全部コールバック!
順序関係あり!
依存
依
存依
存
15. 2019-05-15 potatotips #61 @cattaka_net
Camera 2 APIの辛み
カメラを開く
openCamera
出力先の準備
ImageReader
TextureView
セッションを作る
createCaptureSession
キャプチャー開始
startCaptureRequest
全部コールバック!
順序関係あり!
依存
依
存依
存
画面のライフサイクルにも依存
画面のレイアウトが
完了していないといけない
17. 2019-05-15 potatotips #61 @cattaka_net
Camera Xは設定すれば、
後はLifecycleに乗せてくれる
カメラを開く
openCamera
出力先の準備
ImageReader
TextureView
セッションを作る
createCaptureSession
キャプチャー開始
startCaptureRequest
ここだけ設定する
18. 2019-05-15 potatotips #61 @cattaka_net
コード例
// プレビューの設定をする
val previewConfig = PreviewConfig.Builder().apply {
setTargetResolution(Size(640, 640))
}.build()
val preview = Preview(previewConfig)
// 準備ができたときに、Viewへ出力するように指示
preview.setOnPreviewOutputUpdateListener {
// To update the SurfaceTexture, we have to remove it and re-add it
val parent = viewFinder.parent as ViewGroup
parent.removeView(viewFinder)
parent.addView(viewFinder, 0)
viewFinder.surfaceTexture = it.surfaceTexture
updateTransform()
}
// ライフサイクルにバインド
CameraX.bindToLifecycle(this, preview)
22. 2019-05-15 potatotips #61 @cattaka_net
Firebase MLKitは
インターフェースがシンプル
●
ユースケースに合わせて予め定義されたAPI
●
Firebase ML Vision
●
顔認識: Face Model
●
オブジェクト認識: Object Detection Model
●
イメージラベル: Image Label Model
●
カスタム: AutoML
23. 2019-05-15 potatotips #61 @cattaka_net
良しなにやってくれる
●
例:テキストの認識
// 画像を準備
val image = FirebaseVisionImage.fromMediaImage(src, rotation)
// 認識機の準備
val recognizer = FirebaseVision.getInstance()
.onDeviceTextRecognizer
// 認識の開始
recognizer.processImage(image)
.addOnSuccessListener { texts -> continuation.resume(texts) }
.addOnFailureListener { e -> continuation.resumeWithException(e) }
27. 2019-05-15 potatotips #61 @cattaka_net
Object Detection Model
https://drive.google.com/file/d/1LXBsgIRMeNSpB3zV1MmAcGGPjqlakTo2/view?usp=sharing
28. 2019-05-15 potatotips #61 @cattaka_net
Image Label Model
https://drive.google.com/file/d/1DUszdyxs5T5RLEH3QiXOnO8u7BLuHyRn/view?usp=sharing