From: Kwang Son Date: Tue, 22 Sep 2020 01:01:59 +0000 (+0900) Subject: correction heuristic algorithm X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7c17f9f01f552834fe734f1245e6774f968b44b8;p=platform%2Fcore%2Fapi%2Fmediavision.git correction heuristic algorithm Change-Id: I259bddb9525075d377b1992b9fc3f1523d21a6cf --- diff --git a/test/testsuites/stream_infer/stream_infer.c b/test/testsuites/stream_infer/stream_infer.c index f4d9b583..f09ad118 100644 --- a/test/testsuites/stream_infer/stream_infer.c +++ b/test/testsuites/stream_infer/stream_infer.c @@ -611,11 +611,15 @@ draw_overlay_pose (GstElement * overlay, cairo_t * cr, guint64 timestamp, snprintf(tmpText[2], 1024, "Count: %2d", hpPoseCount); + cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.7); cairo_move_to(cr, 400.0, 30.0); cairo_show_text(cr, howToText[0]); cairo_move_to(cr, 420.0, 45.0); cairo_show_text(cr, howToText[1]); + + + //accept if (hpPoseScore >= thPoseScore) { if (hpPoseHoldTime > thResetCount) cairo_set_source_rgba(cr, 0.0, 0.1, 0.9, 0.7); @@ -628,8 +632,10 @@ draw_overlay_pose (GstElement * overlay, cairo_t * cr, guint64 timestamp, cairo_show_text(cr, tmpText[1]); cairo_move_to(cr, 420.0, 90.0); cairo_show_text(cr, tmpText[2]); + - } else { + + } else { // wrong cairo_set_source_rgba(cr, 0.9, 0.1, 0.0, 0.7); cairo_move_to(cr, 420.0, 60.0); cairo_show_text(cr, tmpText[0]); @@ -637,6 +643,66 @@ draw_overlay_pose (GstElement * overlay, cairo_t * cr, guint64 timestamp, cairo_show_text(cr, tmpText[1]); cairo_move_to(cr, 420.0, 90.0); cairo_show_text(cr, tmpText[2]); + + // can not find body + for(int ilb=0;ilb < 6; ilb++) + { + if(humanSkeleton.scores[ilb+10] < 0.2) + { + cairo_set_font_size(cr,30); + cairo_move_to(cr, 150.0, 200.0); + cairo_show_text(cr, "Can not find your lower body"); + cairo_move_to(cr, 150.0, 250.0); + cairo_show_text(cr, "get into camera view"); + return; + } + } + + //correction + float tx = humanSkeleton.prevPose[10].x; + float ty = humanSkeleton.prevPose[10].y; + float lx = humanSkeleton.prevPose[12].x; + float ly = humanSkeleton.prevPose[12].y; + float rx = humanSkeleton.prevPose[15].x; + float ry = humanSkeleton.prevPose[15].y; + char CorrectionText[1024]; + float leg_len = sqrt(((tx-lx)*(tx-lx))+((ty-ly)*(ty-ly))); + float step_wide = sqrt(((lx-rx)*(lx-rx))+((ly-ry)*(ly-ry)));; + + cairo_set_source_rgba(cr, 0.5, 0.5, 0.0, 0.5); + cairo_set_line_width(cr, 10.0); + if(step_wide < leg_len * 0.7) // step wider + { + float x1 = humanSkeleton.prevPose[12].x; + float x2 = humanSkeleton.prevPose[15].x; + float y1 = humanSkeleton.prevPose[12].y; + float y2 = humanSkeleton.prevPose[15].y; + + cairo_move_to(cr, x1-15, y1); + cairo_line_to(cr, x2+15 ,y2); + cairo_stroke(cr); + snprintf(CorrectionText, 1024, "Step wider"); + + } + else + { + cairo_set_source_rgba(cr, 0.5, 0.5, 0.0, 0.5); + cairo_set_line_width(cr, 10.0); + float x1 = humanSkeleton.prevPose[10].x; + float x2 = humanSkeleton.prevPose[11].x; + float y1 = humanSkeleton.prevPose[10].y; + float y2 = humanSkeleton.prevPose[11].y; + float gdistance_square = ((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)); + float move = sqrt(gdistance_square / 2.44); + + cairo_move_to(cr, x1, y1); + cairo_line_to(cr, x1 - 1.2*move, y1 + move); + cairo_stroke(cr); + snprintf(CorrectionText, 1024, "Pretend sit down to fit line"); + } + cairo_set_font_size(cr,30); + cairo_move_to(cr, 150.0, 200.0); + cairo_show_text(cr, CorrectionText); } } @@ -1550,8 +1616,8 @@ static int app_create(void *data) if (ad->modelType == MODEL_TYPE_POSE_CPM) { - err = perform_armnn_human_pose_cpm_configure(hp_mv_engine_cfg); - //err = perform_tflite_human_pose_cpm_configure(hp_mv_engine_cfg); + //err = perform_armnn_human_pose_cpm_configure(hp_mv_engine_cfg); + err = perform_tflite_human_pose_cpm_configure(hp_mv_engine_cfg); mv_pose_create(&hpPoser); mv_pose_set_from_file(hpPoser, @@ -1728,7 +1794,7 @@ static int app_create(void *data) g_signal_connect (coverlay, "caps-changed", G_CALLBACK (prepare_overlay), overlay_state); if (!ad->filename) { - g_object_set(G_OBJECT(source), "device", "/dev/video8", NULL); // 252 + g_object_set(G_OBJECT(source), "device", "/dev/video252", NULL); // 252 } else { g_object_set(G_OBJECT(source), "location", ad->filename, NULL); }