[UTC][capi-media-vision][ACR-1599][Add mv_inference_pose_get_label() and change mv_in... 87/244387/4
authorTae-Young Chung <ty83.chung@samsung.com>
Fri, 18 Sep 2020 05:07:28 +0000 (14:07 +0900)
committerTae-Young Chung <ty83.chung@samsung.com>
Mon, 21 Sep 2020 23:40:12 +0000 (08:40 +0900)
Change-Id: I685b5aaca9816d0e9e2a65e20850c71c53b295b0
Signed-off-by: Tae-Young Chung <ty83.chung@samsung.com>
src/utc/capi-media-vision/public.list
src/utc/capi-media-vision/res/inference/models/pld_mocap_mapping.txt
src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h
src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h
src/utc/capi-media-vision/tct-capi-media-vision-core_tv.h
src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h
src/utc/capi-media-vision/utc-mv_inference.c

index bd360a67203b66f8ceece7f31ddef6a66c937b94..24c2be904821156d99b8786d7368b3ec961ae584 100755 (executable)
@@ -81,6 +81,7 @@ mv_inference_facial_landmark_detect
 mv_inference_pose_landmark_detect
 mv_inference_pose_get_number_of_poses
 mv_inference_pose_get_number_of_landmarks
+mv_inference_pose_get_label
 mv_inference_pose_get_landmark
 mv_pose_create
 mv_pose_destroy
index c6b27f67e3e634b0314da95445343da419ca883a..07ce1a209582b4bd2c5cdfc20a65fe7ac6126bbd 100644 (file)
@@ -1,15 +1,15 @@
-Hips,9
-Neck,1
-Head,0
-LeftUpArm,6
-LeftLowArm,7
-LeftHand,8
-RightUpArm,3
-RightLowArm,4
-RightHand,5
-LeftUpLeg,13
-LeftLowLeg,14
-LeftFoot,15
-RightUpLeg,10
-RightLowLeg,11
-RightFoot,12
+Hips,10
+Neck,2
+Head,1
+LeftUpArm,7
+LeftLowArm,8
+LeftHand,9
+RightUpArm,4
+RightLowArm,5
+RightHand,6
+LeftUpLeg,14
+LeftLowLeg,15
+LeftFoot,16
+RightUpLeg,11
+RightLowLeg,12
+RightFoot,13
index 44c047b47dd40a74159ee49cf649bef529dc684d..8944c9dc2b0649fa5bb1f2fb42ea5b65d1224987 100755 (executable)
@@ -40,6 +40,7 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup(voi
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(void);
+extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void);
 
 extern int utc_mediavision_mv_create_source_p(void);
 extern int utc_mediavision_mv_create_source_n(void);
@@ -232,6 +233,8 @@ extern int utc_mediavision_mv_inference_get_number_of_poses_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_poses_n(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_n(void);
+extern int utc_mediavision_mv_inference_get_label_p(void);
+extern int utc_mediavision_mv_inference_get_label_n(void);
 extern int utc_mediavision_mv_inference_get_landmark_p(void);
 extern int utc_mediavision_mv_inference_get_landmark_n(void);
 extern int utc_mediavision_mv_pose_create_p(void);
@@ -434,6 +437,8 @@ testcase tc_array[] = {
        {"utc_mediavision_mv_inference_pose_landmark_detect_n2", utc_mediavision_mv_inference_pose_landmark_detect_n2,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_p", utc_mediavision_mv_inference_get_number_of_poses_p,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_n", utc_mediavision_mv_inference_get_number_of_poses_n,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_p", utc_mediavision_mv_inference_get_label_p,utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_n", utc_mediavision_mv_inference_get_label_n,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_p", utc_mediavision_mv_inference_get_number_of_landmarks_p,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_n", utc_mediavision_mv_inference_get_number_of_landmarks_n,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_landmark_p", utc_mediavision_mv_inference_get_landmark_p,utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup,utc_capi_media_vision_inference_cleanup2},
index 44c047b47dd40a74159ee49cf649bef529dc684d..738d08cd7ad37172634e7be156fd200a55db5bd9 100755 (executable)
@@ -40,6 +40,7 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup(voi
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(void);
+extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void);
 
 extern int utc_mediavision_mv_create_source_p(void);
 extern int utc_mediavision_mv_create_source_n(void);
@@ -232,6 +233,8 @@ extern int utc_mediavision_mv_inference_get_number_of_poses_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_poses_n(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_n(void);
+extern int utc_mediavision_mv_inference_get_label_p(void);
+extern int utc_mediavision_mv_inference_get_label_n(void);
 extern int utc_mediavision_mv_inference_get_landmark_p(void);
 extern int utc_mediavision_mv_inference_get_landmark_n(void);
 extern int utc_mediavision_mv_pose_create_p(void);
@@ -434,6 +437,8 @@ testcase tc_array[] = {
        {"utc_mediavision_mv_inference_pose_landmark_detect_n2", utc_mediavision_mv_inference_pose_landmark_detect_n2,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_p", utc_mediavision_mv_inference_get_number_of_poses_p,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_n", utc_mediavision_mv_inference_get_number_of_poses_n,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_p", utc_mediavision_mv_inference_get_label_p,utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_n", utc_mediavision_mv_inference_get_label_n,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_p", utc_mediavision_mv_inference_get_number_of_landmarks_p,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_n", utc_mediavision_mv_inference_get_number_of_landmarks_n,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_landmark_p", utc_mediavision_mv_inference_get_landmark_p,utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup,utc_capi_media_vision_inference_cleanup2},
@@ -450,4 +455,5 @@ testcase tc_array[] = {
        {NULL, NULL}
 };
 
+
 #endif // __TCT_CAPI-MEDIA-VISION-NATIVE_H__
index 44c047b47dd40a74159ee49cf649bef529dc684d..8944c9dc2b0649fa5bb1f2fb42ea5b65d1224987 100755 (executable)
@@ -40,6 +40,7 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup(voi
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(void);
+extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void);
 
 extern int utc_mediavision_mv_create_source_p(void);
 extern int utc_mediavision_mv_create_source_n(void);
@@ -232,6 +233,8 @@ extern int utc_mediavision_mv_inference_get_number_of_poses_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_poses_n(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_n(void);
+extern int utc_mediavision_mv_inference_get_label_p(void);
+extern int utc_mediavision_mv_inference_get_label_n(void);
 extern int utc_mediavision_mv_inference_get_landmark_p(void);
 extern int utc_mediavision_mv_inference_get_landmark_n(void);
 extern int utc_mediavision_mv_pose_create_p(void);
@@ -434,6 +437,8 @@ testcase tc_array[] = {
        {"utc_mediavision_mv_inference_pose_landmark_detect_n2", utc_mediavision_mv_inference_pose_landmark_detect_n2,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_p", utc_mediavision_mv_inference_get_number_of_poses_p,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_n", utc_mediavision_mv_inference_get_number_of_poses_n,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_p", utc_mediavision_mv_inference_get_label_p,utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_n", utc_mediavision_mv_inference_get_label_n,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_p", utc_mediavision_mv_inference_get_number_of_landmarks_p,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_n", utc_mediavision_mv_inference_get_number_of_landmarks_n,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_landmark_p", utc_mediavision_mv_inference_get_landmark_p,utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup,utc_capi_media_vision_inference_cleanup2},
index 44c047b47dd40a74159ee49cf649bef529dc684d..738d08cd7ad37172634e7be156fd200a55db5bd9 100755 (executable)
@@ -40,6 +40,7 @@ extern void utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup(voi
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup(void);
 extern void utc_capi_media_vision_inference_pose_landmark_detect_cb4_startup(void);
+extern void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void);
 
 extern int utc_mediavision_mv_create_source_p(void);
 extern int utc_mediavision_mv_create_source_n(void);
@@ -232,6 +233,8 @@ extern int utc_mediavision_mv_inference_get_number_of_poses_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_poses_n(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_p(void);
 extern int utc_mediavision_mv_inference_get_number_of_landmarks_n(void);
+extern int utc_mediavision_mv_inference_get_label_p(void);
+extern int utc_mediavision_mv_inference_get_label_n(void);
 extern int utc_mediavision_mv_inference_get_landmark_p(void);
 extern int utc_mediavision_mv_inference_get_landmark_n(void);
 extern int utc_mediavision_mv_pose_create_p(void);
@@ -434,6 +437,8 @@ testcase tc_array[] = {
        {"utc_mediavision_mv_inference_pose_landmark_detect_n2", utc_mediavision_mv_inference_pose_landmark_detect_n2,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_p", utc_mediavision_mv_inference_get_number_of_poses_p,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_poses_n", utc_mediavision_mv_inference_get_number_of_poses_n,utc_capi_media_vision_inference_pose_landmark_detect_cb1_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_p", utc_mediavision_mv_inference_get_label_p,utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup,utc_capi_media_vision_inference_cleanup2},
+       {"utc_mediavision_mv_inference_get_label_n", utc_mediavision_mv_inference_get_label_n,utc_capi_media_vision_inference_startup2,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_p", utc_mediavision_mv_inference_get_number_of_landmarks_p,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_number_of_landmarks_n", utc_mediavision_mv_inference_get_number_of_landmarks_n,utc_capi_media_vision_inference_pose_landmark_detect_cb2_startup,utc_capi_media_vision_inference_cleanup2},
        {"utc_mediavision_mv_inference_get_landmark_p", utc_mediavision_mv_inference_get_landmark_p,utc_capi_media_vision_inference_pose_landmark_detect_cb3_startup,utc_capi_media_vision_inference_cleanup2},
@@ -450,4 +455,5 @@ testcase tc_array[] = {
        {NULL, NULL}
 };
 
+
 #endif // __TCT_CAPI-MEDIA-VISION-NATIVE_H__
index 37ea609d82c1f0e1c17378a7b8ad2b7f82b9c7d9..fa2df794d7ddea356163f0401b9b3e240af54377 100755 (executable)
@@ -52,6 +52,7 @@ static bool gIsGetPoseLandmark = false;
 static int gPldResultErr;
 static int gPldResultNumberOfPoses;
 static int gPldResultNumberOfLandmarks;
+static int gPldResultLabel;
 static float gPoseCompareScore;
 
 #define IC_MODEL_FILENAME "ic_tflite_model.tflite"
@@ -1487,7 +1488,6 @@ int utc_mediavision_mv_inference_facial_landmark_detect_n2(void)
 
 static void _pld_detected_cb(mv_source_h source,
                         mv_inference_pose_result_h locations,
-                        int label,
                         void *user_data)
 {
     gIsPoseLandmarkDetectCallBackInvoked = true;
@@ -1627,7 +1627,6 @@ int utc_mediavision_mv_inference_pose_landmark_detect_n2(void)
 
 static void get_pose_landmark_detection_result_cb1(mv_source_h source,
                                     mv_inference_pose_result_h result,
-                                    int label,
                                     void *user_data)
 {
     printf("Inside get_pose_landmark_detection_result_cb1\n");
@@ -1739,7 +1738,6 @@ int utc_mediavision_mv_inference_get_number_of_poses_n(void)
 
 static void get_pose_landmark_detection_result_cb2(mv_source_h source,
                                     mv_inference_pose_result_h result,
-                                    int label,
                                     void *user_data)
 {
     printf("Inside get_pose_landmark_detection_result_cb2\n");
@@ -1851,7 +1849,6 @@ int utc_mediavision_mv_inference_get_number_of_landmarks_n(void)
 
 static void get_pose_landmark_detection_result_cb3(mv_source_h source,
                                     mv_inference_pose_result_h result,
-                                    int label,
                                     void *user_data)
 {
     printf("Inside get_pose_landmark_detection_result_cb3\n");
@@ -1992,6 +1989,125 @@ int utc_mediavision_mv_inference_get_landmark_n(void)
     return 0;
 }
 
+static void get_pose_landmark_detection_result_cb5(mv_source_h source,
+                                    mv_inference_pose_result_h result,
+                                    void *user_data)
+{
+    printf("Inside get_pose_landmark_detection_result_cb5\n");
+    gIsPoseLandmarkDetectCallBackInvoked = true;
+
+    gPldResultErr = mv_inference_pose_get_number_of_poses(result, &gPldResultNumberOfPoses);
+    if (gPldResultErr != MEDIA_VISION_ERROR_NONE)
+        return;
+
+    if (gPldResultNumberOfPoses <= 0)
+        return;
+
+    gPldResultErr = mv_inference_pose_get_label(result, 0, &gPldResultLabel);
+    printf("Before retrun get_pose_landmark_detection_result_cb5\n");
+}
+
+/**
+ * @function   utc_mediavision_mv_inference_pose_landmark_detect_cb5_startup
+ * @description        Inference module UTC startup code for mv_inference_pose_get_label()
+ * @parameter  NA
+ * @return             NA
+ */
+void utc_capi_media_vision_inference_pose_landmark_detect_cb5_startup(void)
+{
+    printf("Inside utc_mediavision_mv_inference_pose_landmark_detect_cb5_startup\n");
+    utc_capi_media_vision_inference_startup2();
+
+    if (gStartupError != MEDIA_VISION_ERROR_NONE)
+        return;
+
+    char imageFilename[FILE_PATH_SIZE];
+    int ret = set_pose_landmark_detection_engine_config(gEngineConfigHandle);
+    if (ret != MEDIA_VISION_ERROR_NONE) {
+        printf("set_pose_landmark_detection_engine_config is failed\n");
+        return;
+    }
+
+    ret = mv_inference_configure(gInferenceHandle, gEngineConfigHandle);
+    if (ret != MEDIA_VISION_ERROR_NONE) {
+        printf("mv_inference_configure is failed\n");
+        return;
+    }
+
+    ret = mv_inference_prepare(gInferenceHandle);
+    if (ret != MEDIA_VISION_ERROR_NONE) {
+        printf("mv_inference_prepare is failed\n");
+        return;
+    }
+
+    snprintf(imageFilename, FILE_PATH_SIZE, "%s/images/%s", gInferenceExampleDir, "poseLandmark.jpg");
+    ret = load_image_to_media_source(imageFilename, gSourceHandle);
+    if (ret != MEDIA_VISION_ERROR_NONE) {
+        printf("load_image_to_media_source is failed\n");
+        return;
+    }
+
+    ret = mv_inference_pose_landmark_detect(gSourceHandle,
+                                    gInferenceHandle,
+                                    NULL,
+                                    get_pose_landmark_detection_result_cb5,
+                                    NULL);
+    if (ret != MEDIA_VISION_ERROR_NONE) {
+        printf("mv_inference_pose_landmark_detect is failed\n");
+        return;
+    }
+
+    printf("Before return utc_mediavision_mv_inference_pose_landmark_detect_cb5_startup\n");
+}
+
+/**
+ * @brief Positive test case of mv_inference_get_label()
+ * @testcase        utc_mediavision_mv_inference_pose_get_label_p
+ * @since_tizen     6.0
+ * @description     Get the label from a detected result
+ */
+int utc_mediavision_mv_inference_get_label_p(void)
+{
+    printf("Inside mv_inference_pose_get_label_p\n");
+
+    if (!isVisionSupported) {
+        assert_eq(gStartupError, MEDIA_VISION_ERROR_NOT_SUPPORTED);
+        return 0;
+    }
+
+    assert_eq(true, gIsPoseLandmarkDetectCallBackInvoked);
+    assert_eq(MEDIA_VISION_ERROR_NONE, gPldResultErr);
+    assert_gt(gPldResultNumberOfPoses, 0);
+    assert_lt(gPldResultLabel, 0);
+
+    printf("Before return mv_inference_pose_get_label_p\n");
+    return 0;
+}
+
+/**
+ * @brief Positive test case of mv_inference_get_label()
+ * @testcase        utc_mediavision_mv_inference_pose_get_label_n
+ * @since_tizen     6.0
+ * @description     Get the label from a detected result,
+ *                  but fail because handle is NULL
+ */
+int utc_mediavision_mv_inference_get_label_n(void)
+{
+    printf("Inside mv_inference_pose_get_label_n\n");
+
+    if (!isVisionSupported) {
+        assert_eq(gStartupError, MEDIA_VISION_ERROR_NOT_SUPPORTED);
+        return 0;
+    }
+
+    // handle is NULL
+    int ret = mv_inference_pose_get_label(NULL, 0, &gPldResultLabel);
+    assert_eq(MEDIA_VISION_ERROR_INVALID_PARAMETER, ret);
+
+    printf("Before return mv_inference_pose_get_label_nn");
+    return 0;
+}
+
 /**
  * @brief Positive test case of mv_pose_create_p()
  * @testcase        utc_mediavision_mv_pose_create_p
@@ -2215,7 +2331,6 @@ int utc_mediavision_mv_pose_set_from_file_n2(void)
 
 static void get_pose_landmark_detection_result_cb4(mv_source_h source,
                                     mv_inference_pose_result_h result,
-                                    int label,
                                     void *user_data)
 {
     printf("Inside get_pose_landmark_detection_result_cb4\n");