From: Tae-Young Chung Date: Fri, 18 Sep 2020 05:07:28 +0000 (+0900) Subject: [UTC][capi-media-vision][ACR-1599][Add mv_inference_pose_get_label() and change mv_in... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9dff44ab9891b656f2928185761a0efcf43e6af8;p=test%2Ftct%2Fnative%2Fapi.git [UTC][capi-media-vision][ACR-1599][Add mv_inference_pose_get_label() and change mv_inference_pose_landmark_detected_cb()] Change-Id: I685b5aaca9816d0e9e2a65e20850c71c53b295b0 Signed-off-by: Tae-Young Chung --- diff --git a/src/utc/capi-media-vision/public.list b/src/utc/capi-media-vision/public.list index bd360a672..24c2be904 100755 --- a/src/utc/capi-media-vision/public.list +++ b/src/utc/capi-media-vision/public.list @@ -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 diff --git a/src/utc/capi-media-vision/res/inference/models/pld_mocap_mapping.txt b/src/utc/capi-media-vision/res/inference/models/pld_mocap_mapping.txt index c6b27f67e..07ce1a209 100644 --- a/src/utc/capi-media-vision/res/inference/models/pld_mocap_mapping.txt +++ b/src/utc/capi-media-vision/res/inference/models/pld_mocap_mapping.txt @@ -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 diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h index 44c047b47..8944c9dc2 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_mobile.h @@ -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}, diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h index 44c047b47..738d08cd7 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_tizeniot.h @@ -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__ diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_tv.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_tv.h index 44c047b47..8944c9dc2 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_tv.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_tv.h @@ -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}, diff --git a/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h b/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h index 44c047b47..738d08cd7 100755 --- a/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h +++ b/src/utc/capi-media-vision/tct-capi-media-vision-core_wearable.h @@ -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__ diff --git a/src/utc/capi-media-vision/utc-mv_inference.c b/src/utc/capi-media-vision/utc-mv_inference.c index 37ea609d8..fa2df794d 100755 --- a/src/utc/capi-media-vision/utc-mv_inference.c +++ b/src/utc/capi-media-vision/utc-mv_inference.c @@ -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");