/mediapipe-demo-hand-detection

This project is written in Kotlin which makes it easier for android developers to implement hand detection feature.

Primary LanguageKotlin

Hand Detection Android Demo

Overview

This is an app that uses MediaPipe's Hands model to detect the hand parts in the frames seen by your device's camera. These instructions walk you through building and running the demo on an Android device. Camera captures are discarded immediately after use, nothing is stored or saved.

Demo Image

Build the demo using Android Studio

Prerequisites

  • If you don't have it already, install Android Studio 4.1 or later, following the instructions on the website.

  • Android device and Android development environment with minimum API 21.

Building

  • Open Android Studio, and from the Welcome screen, select Open an existing Android Studio project.

  • From the Open File or Project window that appears, navigate to and select the mediapipe-demo-hand-detection directory from wherever you cloned the Supreme Tech sample GitHub repo. Click OK.

  • If it asks you to do a Gradle Sync, click OK.

  • You may also need to install various platforms and tools, if you get errors like Failed to find target with hash string 'android-21' and similar. Click the Run button (the green arrow) or select Run > Run 'android' from the top menu. You may need to rebuild the project using Build > Rebuild Project.

  • If it asks you to use Instant Run, click Proceed Without Instant Run.

  • Also, you need to have an Android device plugged in with developer options enabled at this point. See here for more details on setting up developer devices.

Integrate to your app

Hand detection logic is implemented in classes inside the package vn.supremetech.examples.handdetection. Follow these steps to integrate the model into your own app.

  1. Copy the TFLite models (palm_detection.tflite and hand_landmark.tflite) to your app's assests folder.

  2. Add these dependencies to your app's build.gradle file:

    • implementation 'org.tensorflow:tensorflow-lite-support:0.2.0'
    • implementation 'org.tensorflow:tensorflow-lite-gpu:2.5.0'
  3. Copy all files under the vn.supremetech.examples.handdetection.handlandmark package to your app.

  4. Initialize a hand detector instance:

val detector = HandDetector.create(this)
  1. Detect hand landmarks:
val landmarks = detector.process(bitmap)
// Do something with the landmarks
  1. Close the hand detector once completed:
detector.close()

Model used

Downloading, extraction and placement in assets folder has been managed automatically by download.gradle.

If you explicitly want to download the model, you can download it from here:

Additional Note

Please do not delete the assets folder content. If you explicitly deleted the files, then please choose Build > Rebuild from menu to re-download the deleted model files into assets folder.