#!/bin/bash



# Disclaimer:
# Script for internal use. We might make continuous changess on it and we will not answer questions about it.

# Full usage description:
    # Step 1 - Getting JSON output
        # Running it:
        # Run it from OpenPose main folder with the following command:
        # clear && clear && make all -j`nproc` && bash ./scripts/tests/hand_accuracy_test.sh

        # Image paths:
        # Read that script for details about all the paths and change them for your own paths.

        # Careful:
        # If you are using the NAS, please do not override my files, i.e., please change the output paths (corresponding to the ones indicated by `--write_json`, which is ).

        # In order to generate the JSON output:
        # Uncomment the commented lines starting by `--write_json` and `--display 0`

    # Step 2 - Running JSON output to get accuracy
        # Once you have the JSON files, run them with the script Tomas prepared for it, which in my case I use:
        # From Matlab, `cd /media/posefs3b/Users/gines/openpose_train/dataset/hand_testing`
        # Run `b_keypointJsonToMatAndImage` to generate your new file (you can run the current code to try it, I commented everything but test 1)
        # Run `c_plot_save_results` to plot and save the results. Just modify `models` and `texts` with your new model path and desired name.

# Clear terminal screen
clear && clear



# Fix paths
HAND_TESTING_FOLDER="/media/posefs3b/Users/gines/openpose_train/dataset/hand_testing/"
IMAGES_FOLDER=${HAND_TESTING_FOLDER}"0_images/"
IMAGES_BB_FOLDER=${HAND_TESTING_FOLDER}"3_images_bounding_box"
HAND_GROUND_TRUTH_FOLDER=${HAND_TESTING_FOLDER}"4_hand_detections"
PEOPLE_JSON_FOLDER=${HAND_TESTING_FOLDER}"5_keypointJson/"

# Variable paths
SCALES=6
SUFFIX="_${SCALES}"
HAND_RESULTS_FOLDER_BASE=${PEOPLE_JSON_FOLDER}"hand_keypoints_estimated"
HAND_RESULTS_FOLDER_NO_BB=${HAND_RESULTS_FOLDER_BASE}"_old"${SUFFIX}
HAND_RESULTS_FOLDER_BB=${HAND_RESULTS_FOLDER_BASE}"_BBox"${SUFFIX}
HAND_RESULTS_FOLDER_BODY_65=${HAND_RESULTS_FOLDER_BASE}"_BODY_65"



# Given bounding box
echo "Output on ${HAND_RESULTS_FOLDER_BB}"
rm -rf $HAND_RESULTS_FOLDER_BB
# 1 scale
./build/examples/tests/handFromJsonTest.bin \
    --hand_scale_number ${SCALES} --hand_scale_range 0.4 \
    --image_dir ${IMAGES_BB_FOLDER} \
    --hand_ground_truth ${HAND_GROUND_TRUTH_FOLDER} \
    --write_json $HAND_RESULTS_FOLDER_BB \
    --display 0



# No bounding box
echo "Output on ${HAND_RESULTS_FOLDER_NO_BB}"
rm -rf $HAND_RESULTS_FOLDER_NO_BB
# 1 scale
./build/examples/openpose/openpose.bin \
    --hand \
    --hand_scale_number ${SCALES} --hand_scale_range 0.4 \
    --image_dir ${IMAGES_FOLDER} \
    --write_json $HAND_RESULTS_FOLDER_NO_BB \
    --display 0
