This commit is contained in:
2025-12-24 15:37:35 +08:00
commit 3f89431434
7 changed files with 1080 additions and 0 deletions

95
scripts/client_example.sh Executable file
View File

@ -0,0 +1,95 @@
#!/usr/bin/env bash
#
# Example curl client for the Human Pose Estimation server.
#
# Usage:
# ./client_example.sh <image_path> [url]
#
# Examples:
# ./client_example.sh photo.jpg
# ./client_example.sh photo.png https://api.pose.weihua-iot.cn/hpe
#
set -euo pipefail
# Default server URL
DEFAULT_URL="https://api.pose.weihua-iot.cn/hpe"
# Parse arguments
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <image_path> [url]" >&2
echo "" >&2
echo "Examples:" >&2
echo " $0 photo.jpg" >&2
echo " $0 photo.png http://192.168.1.100:8245/hpe" >&2
exit 1
fi
IMAGE_PATH="$1"
URL="${2:-$DEFAULT_URL}"
# Check if image exists
if [[ ! -f "$IMAGE_PATH" ]]; then
echo "Error: Image file not found: $IMAGE_PATH" >&2
exit 1
fi
# Determine content type from file extension
get_content_type() {
local ext="${1##*.}"
ext="${ext,,}" # lowercase
case "$ext" in
jpg|jpeg)
echo "image/jpeg"
;;
png)
echo "image/png"
;;
*)
echo "Error: Unsupported image format: .$ext. Use JPEG or PNG." >&2
exit 1
;;
esac
}
CONTENT_TYPE=$(get_content_type "$IMAGE_PATH")
# Send request and capture response
echo "Sending image to $URL ..." >&2
HTTP_RESPONSE=$(curl -s -w "\n%{http_code}" \
-X POST \
-H "Content-Type: $CONTENT_TYPE" \
--data-binary "@$IMAGE_PATH" \
"$URL")
# Split response body and status code
HTTP_BODY=$(echo "$HTTP_RESPONSE" | sed '$d')
HTTP_CODE=$(echo "$HTTP_RESPONSE" | tail -n1)
# Handle response
case "$HTTP_CODE" in
200)
if [[ -z "$HTTP_BODY" ]]; then
echo "No poses detected in the image."
else
# Pretty print JSON if jq is available
if command -v jq &> /dev/null; then
echo "$HTTP_BODY" | jq .
else
echo "$HTTP_BODY"
fi
fi
;;
*)
echo "HTTP Error: $HTTP_CODE" >&2
if [[ -n "$HTTP_BODY" ]]; then
if command -v jq &> /dev/null; then
echo "$HTTP_BODY" | jq . >&2
else
echo "$HTTP_BODY" >&2
fi
fi
exit 1
;;
esac