detectPoses
warning
The document is a continuation of the previous document, if you have landed directly on this page then, Please read from page Get started.
What is detectPoses component ?
detectPoses component is used to detect pose of a person in input image.
- Description : detectPoses() takes an input as image in base64 string format and returns the points(x,y) with probability for that point.Check Input and output parameters for details.
- Parameters :
- Input(Via STDIN) : A JSON String with following parameters:
- Parameter1 : Image (.jpg/.png) in base64 format
- Output(Via STDOUT) : A JSON string with following contents
- For each detected point
- x,y co-ordinates
- probability being point
- int responseID
- For each detected point
- Input(Via STDIN) : A JSON String with following parameters:
List of detectPoses features in shunya stack
- Get human pose data.
Using detectPoses
Requirements to use detectPoses
- Shunya OS installed (supported Arm devices) or Shunya OS docker container (X86 based windows/linux devices)
- Shunya AI installed in Shunya OS.
Steps to use detectPoses
- Set input image location.
- Get human pose data
note
Run the steps given below inside Shunya OS installed (supported Arm devices) or Shunya OS docker container (X86 based windows/linux devices) terminals.
Lets take an example use case: Say we need to
- Detect pose of person in an image.
- Get JSON output of detected pose data.
Steps are
Step 1: Set location of the input image for pose estimation
Start with an ready to use template for detecting pose from image.
git clone https://gitlab.iotiot.in/shunya/products/shunya-ai-examples.git
cd shunya-ai-examples/indiv-componentsOpen the examples in a text editor and modify as per your usecase.
- For CPP you will find the examples in the folder
cpp-examples/pose-estimation/detectPoses
- Open the file
detect_poses.cpp
- Modify the line to set the location of the input image
/* Modify the location of the image to your input image */
cv::Mat inputImage = cv::imread("../images/pose.jpeg");- For Python you will find the examples in the folder
python-examples/pose-estimation/detectPoses
- Open the file
detect_poses.py
- Modify the line to set the location of the input image
# Modify the location of the image to your input image
img = cv2.imread("images/pose.jpeg")- For CPP you will find the examples in the folder
Step 2: Get human pose data.
Once you are done editing, save and run the code, by running
mkdir build && cd build
cmake ../
make
./detectPosesCpppython3 detect_poses.py
Running the codes will print the JSON output on the terminal (to STDOUT).
For Example:
Lets say the input image is
Input JSON is
{
"inputImage": "4h32e898473urmcrkd947ryuemcc3x21j98k09754ycmx1k030i1d98754yn==",
}Then the JSON output is
{
"Image":"/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUG",
"DetectedposesJSON":[
{
"Point0":{
"Landmarks":{
"x":112.5,
"y":21.09375
},
"Prob":0.979064404964447
},
"Point1":{
"Landmarks": {
"x":117.1875,
"y":17.578125
},
"Prob":0.9587295651435852
},
.....
}
}
Understand this component with an example (ready to use code)
This is an example for pose-estimation and here we will be using 2 components: detectPoses and drawPoses
Check this ready to use example in c++ and python
Download the code
git clone https://gitlab.iotiot.in/shunya/products/shunya-ai-examples.git
cd shunya-ai-examples/cpp-examples/pose-estimation```shell git clone https://gitlab.iotiot.in/shunya/products/shunya-ai-examples.git cd shunya-ai-examples/python-examples/pose-estimation ```In this folder there is a file, pose_detect.cpp or pose_detect.py
detectbjects Components used
subprocess::popen detectPoses("/usr/bin/detectPoses", {});
```shell detectPoses = Popen(['/usr/bin/detectPoses'], stdout=PIPE, stdin=PIPE) ```drawPoses component used
subprocess::popen drawPoses("/usr/bin/drawPoses", {});
```shell drawPoses = Popen(['/usr/bin/drawPoses'], stdout=PIPE, stdin=PIPE) ```Run code by yourself
- You will get a new image stored in system.mkdir build && cd build
cmake .. && make
./poseEstimateCpp```shell python3 pose_estimate.py ```