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);
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]);
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);
}
}
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,
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);
}