Infinum Android Talks #13 - Vision API by Filip Vinkovic
Transcript of Infinum Android Talks #13 - Vision API by Filip Vinkovic
![Page 1: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/1.jpg)
Vision APIFilip Vinković
![Page 2: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/2.jpg)
Overview
• face detection
• barcode detection
![Page 3: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/3.jpg)
Face Detection
• face tracking
• face orientation
• face landmarks
• classification (eyes open, smiling)
![Page 4: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/4.jpg)
![Page 5: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/5.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/6.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/7.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/8.jpg)
mPreview.start(mCameraSource, mGraphicOverlay);
![Page 9: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/9.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/10.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/11.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/12.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/13.jpg)
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](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/14.jpg)
Resources
• https://developers.google.com/vision/
• https://github.com/googlesamples/android-vision
![Page 15: Infinum Android Talks #13 - Vision API by Filip Vinkovic](https://reader031.fdocuments.net/reader031/viewer/2022021500/586f75811a28ab10258b6095/html5/thumbnails/15.jpg)
Questions?