From 208752d58e2852d1b50f503025ae9781e3fa9997 Mon Sep 17 00:00:00 2001 From: Mautisim Munir Date: Thu, 10 Nov 2022 00:02:09 +0500 Subject: [PATCH] added video api support in java --- .../posetracking_lindera/MainActivity.java | 58 +++++++++++------ .../app/src/main/res/layout/activity_main.xml | 11 +++- .../solutions/lindera/InputSource.java | 5 ++ .../mediapipe/solutions/lindera/Lindera.java | 64 +++++++++++++++++-- 4 files changed, 110 insertions(+), 28 deletions(-) create mode 100644 mediapipe/java/com/google/mediapipe/solutions/copperlabs/copperlabs-lindera/src/main/java/com/google/mediapipe/solutions/lindera/InputSource.java diff --git a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java index f4d55641d..61adde466 100644 --- a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java +++ b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/java/com/google/mediapipe/examples/posetracking_lindera/MainActivity.java @@ -33,9 +33,8 @@ import androidx.appcompat.app.AppCompatActivity; import com.afollestad.materialdialogs.MaterialDialog; import com.google.mediapipe.R; -import com.google.mediapipe.solutions.lindera.BodyJoints; import com.google.mediapipe.solutions.lindera.CameraRotation; -import com.google.mediapipe.solutions.lindera.ComputerVisionPlugin; +import com.google.mediapipe.solutions.lindera.InputSource; import com.google.mediapipe.solutions.lindera.Lindera; import org.json.JSONException; @@ -80,11 +79,11 @@ public class MainActivity extends AppCompatActivity { lindera = new Lindera(plugin); + lindera.setupVideoPicker(this); List cameras = lindera.getAvailableCameras(); // FRONT or BACK lindera.setCamera("FRONT"); lindera.setCameraRotation(CameraRotation.AUTOMATIC); - lindera.fpsHelper.onFpsUpdate = new Consumer() { @Override public void accept(Double fps) { @@ -99,36 +98,55 @@ public class MainActivity extends AppCompatActivity { } + private void startDetectionPipeline(InputSource inputSource){ + if (!isLinderaInitialized) { + modelLoadAsyncDialogue(()->{ + if (inputSource==InputSource.VIDEO){ + lindera.setInputSource(InputSource.VIDEO); + } + lindera.initialize(findViewById(R.id.preview_display_layout), MainActivity.this); + isLinderaInitialized = true; + findViewById(R.id.button_start_video).setVisibility(View.GONE); + findViewById(R.id.button_start_camera).setVisibility(View.GONE); + findViewById(R.id.button_set_model).setVisibility(View.VISIBLE); + findViewById(R.id.button_toggle_landmarks).setVisibility(View.VISIBLE); + findViewById(R.id.button_capture_logging).setVisibility(View.VISIBLE); + + updateLandmarkButtonText(); + updateModelComplexityButtonText(); + if (inputSource==InputSource.VIDEO) { + lindera.pickVideo(); + } + + }); + + + } + isDetectionStarted = !isDetectionStarted; + } /** * Sets up the UI components for the live demo with camera input. */ private void setupLiveDemoUiComponents() { - Button startDetectionButton = findViewById(R.id.button_start_detection); + Button startCameraButton = findViewById(R.id.button_start_camera); + Button startVideoButton = findViewById(R.id.button_start_video); Button toggleLandmarks = findViewById(R.id.button_toggle_landmarks); Button modelComplexity = findViewById(R.id.button_set_model); Button startCapture = findViewById(R.id.button_capture_logging); FrameLayout frameLayout = findViewById(R.id.preview_display_layout); - startDetectionButton.setOnClickListener( + startCameraButton.setOnClickListener( v -> { -// startCameraButton.setVisibility(View.GONE); - if (!isLinderaInitialized) { - modelLoadAsyncDialogue(()->{ - lindera.initialize(frameLayout, MainActivity.this); - isLinderaInitialized = true; - startDetectionButton.setVisibility(View.GONE); - findViewById(R.id.button_set_model).setVisibility(View.VISIBLE); - findViewById(R.id.button_toggle_landmarks).setVisibility(View.VISIBLE); - findViewById(R.id.button_capture_logging).setVisibility(View.VISIBLE); - - updateLandmarkButtonText(); - updateModelComplexityButtonText(); - }); + startDetectionPipeline(InputSource.CAMERA); - } - isDetectionStarted = !isDetectionStarted; + + }); + startVideoButton.setOnClickListener( + v -> { + startDetectionPipeline(InputSource.VIDEO); + }); diff --git a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/res/layout/activity_main.xml b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/res/layout/activity_main.xml index 975690cb0..a2739ccc3 100644 --- a/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/res/layout/activity_main.xml +++ b/mediapipe/java/com/google/mediapipe/solutions/copperlabs/app/src/main/res/layout/activity_main.xml @@ -15,11 +15,18 @@ android:orientation="horizontal">