infinum android talks #13 - vision api by filip vinkovic

15
Vision API Filip Vinković

Upload: infinum

Post on 16-Apr-2017

259 views

Category:

Software


6 download

TRANSCRIPT

Page 1: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Vision APIFilip Vinković

Page 2: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Overview

• face detection

• barcode detection

Page 3: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Face Detection

• face tracking

• face orientation

• face landmarks

• classification (eyes open, smiling)

Page 4: Infinum Android Talks #13 - Vision API by Filip Vinkovic
Page 5: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Face Detection

<com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview android:id="@+id/preview" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.gms.samples.vision.barcodereader.ui.camera.GraphicOverlay android:id="@+id/graphicOverlay" android:layout_width="match_parent" android:layout_height="match_parent" /></com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview>

Page 6: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Face Detection@Overridepublic void onCreate(Bundle savedInstanceState) { . . . FaceDetector detector = new FaceDetector.Builder(this) .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) .build(); detector.setProcessor( new MultiProcessor.Builder<>(new GraphicFaceTrackerFactory()) .build()); mCameraSource = new CameraSource.Builder(this, detector) .setRequestedPreviewSize(640, 480) .setFacing(CameraSource.CAMERA_FACING_BACK) .setRequestedFps(30.0f) .build(); }

Page 7: Infinum Android Talks #13 - Vision API by Filip Vinkovic

private class GraphicFaceTrackerFactory implements MultiProcessor.Factory<Face> { @Override public Tracker<Face> create(Face face) { return new GraphicFaceTracker(mGraphicOverlay); } } private class GraphicFaceTracker extends Tracker<Face> { . . . @Override public void onUpdate(FaceDetector.Detections<Face> detectionResults, Face face) { mOverlay.add(mFaceGraphic); mFaceGraphic.updateFace(face); } . . .}

Face Tracker

Page 8: Infinum Android Talks #13 - Vision API by Filip Vinkovic

mPreview.start(mCameraSource, mGraphicOverlay);

Page 9: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Barcode Detection

• 1D barcodes: EAN-13, EAN-8, UPC-A, UPC-E, Code-39, Code-93, Code-128, ITF, Codabar

• 2D barcodes: QR Code, Data Matrix, PDF-417

• automatically parses QR Codes and PDF-417 values: URL, email, phone, SMS etc.

Page 10: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Barcode Detection

<com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview android:id="@+id/preview" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.gms.samples.vision.barcodereader.ui.camera.GraphicOverlay android:id="@+id/graphicOverlay" android:layout_width="match_parent" android:layout_height="match_parent" /></com.google.android.gms.samples.vision.barcodereader.ui.camera.CameraSourcePreview>

Page 11: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Barcode Detection@Overridepublic void onCreate(Bundle savedInstanceState) { . . . BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(this).build(); BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay); barcodeDetector.setProcessor( new MultiProcessor.Builder<>(barcodeFactory).build()); mCameraSource = new CameraSource.Builder(this, barcodeDetector) .setFacing(CameraSource.CAMERA_FACING_BACK) .setRequestedPreviewSize(1600, 1024) .setRequestedFps(15.0f) .build(); }

Page 12: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Barcode Tracker Factory

class BarcodeTrackerFactory implements MultiProcessor.Factory<Barcode> { private GraphicOverlay<BarcodeGraphic> mGraphicOverlay; BarcodeTrackerFactory(GraphicOverlay<BarcodeGraphic> barcodeGraphicOverlay) { mGraphicOverlay = barcodeGraphicOverlay; } @Override public Tracker<Barcode> create(Barcode barcode) { BarcodeGraphic graphic = new BarcodeGraphic(mGraphicOverlay); return new BarcodeGraphicTracker(mGraphicOverlay, graphic); } }

Page 13: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Barcode Trackerclass BarcodeGraphicTracker extends Tracker<Barcode> {

. . . @Override public void onUpdate(Detector.Detections<Barcode> detectionResults, Barcode barcode) { mOverlay.add(mGraphic); mGraphic.updateItem(barcode); Log.d(TAG, barcode.displayValue); if (barcode.format == Barcode.CONTACT_INFO) { Log.d(TAG, barcode.contactInfo.name.formattedName); } else if (barcode.format == Barcode.GEO) { Log.d(TAG, barcode.geoPoint.lat + " " + barcode.geoPoint.lng); } } . . .}

Page 14: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Resources

• https://developers.google.com/vision/

• https://github.com/googlesamples/android-vision

Page 15: Infinum Android Talks #13 - Vision API by Filip Vinkovic

Questions?