User image analysis v3
const url = 'https://partner-test.revieve.com/api/3/analyzeImage/?skintone=0&gender=unknown&hairtype=-1';const form = new FormData();form.append('image', 'file');form.append('partner_id', 'jmlv6b2qtS');
const options = {method: 'POST'};
options.body = form;
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://partner-test.revieve.com/api/3/analyzeImage/?skintone=0&gender=unknown&hairtype=-1' \ --header 'Content-Type: multipart/form-data' \ --form image=@file \ --form partner_id=jmlv6b2qtSThe endpoint for uploading a user image for skin analysis.
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters ”This parameter lets calculate some specific metrics instead all of them.
-
For example a CV API call with
&components=redness,eyeswould only calculate redness and eye area findings. -
If a user wants makeup and they need masks also, they would call the API with
&components=makeup,masks. -
If components list is undefined, all the metrics are calculated.
Full list of possible components user can manually enable are:
- eyes
- wrinkles
- redness
- redness_absolute
- shine
- acne
- texture
- smoothness
- hyperpigmentation
- hyperpigmentation_adjusted
- makeup
- melasma
- freckles
- dark_spots
- dark_spots_adjusted
- dull_skin
- radiance
- radiance_adjusted
- uneven_skin_tone
- pore_dilation (requires enough face area resolution to succeed)
- masks
- skin_sagging
- skin_firmness
- skin_type
Hair data:
- hair
Skin Age data:
- skin_age
If you want to visualize the individual findings for the metric, use these to include them in the API response (only the following visualizations are supported currently):
- acne_visualization (visualization using legacy scale [0-2500] acne visualization data output)
- acne_normalized_visualization (visualization using normalized scale [0-1] acne visualization data output)
- texture_visualization
- wrinkles_visualization
- redness_visualization
- shine_visualization
- hyperpigmentation_visualization
- freckles_visualization
- dark_spots_visualization
- melasma_visualization
- uneven_skin_tone_visualization
- skin_sagging_visualization
- pore_dilation_visualization
- skin_type_visualization
If both acne_visualization and acne_normalized_visualization are requested, the API response will include acne_normalized_visualization.
User’s skintone to help Revieve CV estimate lighting conditions.
- 0 - No user input (automatic)
- 1 - Light
- 2 - Fair
- 3 - Medium
- 4 - Olive
- 5 - Brown
- 6 - Dark Brown
User’s gender (default unknown)
User’s hair type to help Revieve CV analyze the hair.
- -1 - No user input (automatic)
- 0 - Coily Hair
- 1 - DEPRECATED: CV will ignore this value
- 2 - Curly Hair
- 3 - Straight Hair
- 4 - Wavy Hair
User’s approximate skin tone RGB to help Revieve CV analyze foundation color. String with the unsigned integer data for the RGB values, range 0-255 example 200,145,167 When provided, will override skintone input internally to guide the CV with regards to foundation color estimation. This input should not be provided if the skintone input use is preferred.
Request Body required
Section titled “Request Body required ”object
A JPEG file with minimum dimensions of 600x600 pixels.
Partner ID (if you don’t have one, use jmlv6b2qtS for testing)
Responses
Section titled “ Responses ”Image Analysis output
object
object
Box coordinates that determine where the face is in picture 0 - top x box coordinate 1 - top y box coordinate 2 - bottom x box coordinate 3 - bottom y box coordinate
Degrees that face is rotated from vertical
Data to white balance correction. You must apply in a RGB original colour this algorithm -> Resultant RGB = [Rinverse_color_balance_rb[0]**inverse_color_balance_rb[2], Ginverse_color_balance_rb[2], B*inverse_color_balance_rb[1]*inverse_color_balance_rb[2]]
OKmeans the image sent had no issuesWarningmeans there were some quality issues but CV processing was done.Errormeans the image had serious issues that prevented the CV processing.
object
Name of the finding
object
All available codes, whether they result in error or warning and their descriptions:
General codes:
99(Error) [custom context] undefined failure. [NEW]
Image Preprocessor codes:
100(Error) Unable to process: image must be in RGB color format.101(Error) Unable to process: Image resolution too small.102(Error) Unable to downsample image resolution: Image aspect ratio too extreme.103(Warning) Image too dark. Increase exposure.104(Warning) Image is overexposed. Find more diffuse lighting.
Face Detection codes:
201(Error) Unable to detect a face202(Warning) Multiple faces detected. Only the best fit face is analyzed.203(Warning) Face detection is uncertain. Analysis quality is compromized.204(Warning) Face detection is very uncertain. Analysis quality is unreliable.205(Warning) More margin space around the face needed. Results might be compromised. Take the picture a bit further away.206(Error) Facial landmarks are invalid. Aborting processing.
Normalizer codes:
301(Error) The detected face resolution is too small. Take a photo closer to the target.302(Error) Face is too much tilted to the side. Face straight at the camera.303(Warning) Face is possibly tilted to the side. Face straight at the camera.304(Error) Face is too much tilted down. Face straight at the camera.305(Warning) Face is possibly tilted down. Face straight at the camera.306(Warning) Face is possibly tilted up. Face straight at the camera.307(Warning) Image too dark at the face area. Increase exposure/light to the face.308(Warning) Image is overexposed at the face area. Find more diffuse lighting or reduce exposure.309(Warning) The face area blue channel is clipping (overexposed). Reduce exposure or adjust color balance.310(Warning) The face area green channel is clipping (overexposed). Reduce exposure or adjust color balance.311(Warning) The face area red channel is clipping (overexposed). Reduce exposure or adjust color balance.312(Warning) The face has unsymmetric exposure. Find even illumination.313(Warning) The face area has hard shadows. Find more diffuse lighting.314(Warning) Eyeglasses detected. Remove eyeglasses before taking the photo. Results are unreliable.315(Error) Forehead is partially outside the image. Make sure the whole face fits the image. Aborting processing.316(Error) Lower face is partially outside the image. Make sure the whole face fits the image. Aborting processing.317(Error) Face right side is partially outside the image. Make sure the whole face fits the image. Aborting processing.318(Error) Face left side is partially outside the image. Make sure the whole face fits the image. Aborting processing.319(Warning) Face is too tightly framed in the image. Leave more space around the face.
Skin masking codes:
401(Warning) Unable to sample skin. Acne/Hyperpigmentation results are unreliable.
Miscellaneous global codes:
500(Error) All metrics had an error.
Makeup analysis codes:
1000(Error) Skin tone input not defined. Unable to proceed.1101(Error) Eyes look too much closed. Keep eyes open. Eye color analysis aborted.1102(Warning) Eyes look quite closed. Keep eyes open.1111(Error) Eyes region is too dark. Improve lighting on the eyes. Eye color analysis aborted.1112(Warning) Eyes region is quite dark. Improve lighting on the eyes.1121(Error) Eyes whites have a heavy color cast. Correct white balance settings on the camera. Eye color analysis aborted. [OBSOLETE]1122(Warning) Eyes whites have a significant color cast. Correct white balance settings on the camera.1191(Error) Eye color detection processing error 1. Eye area has no color information.1192(Error) Eye color detection processing error 2. Eye area is too dark.1200(Warning) Color balance not corrected due to eye area low image quality. Skin foundation color analysis might be unreliable
Pore dilation:
2000(Error) Image resolution for the face area is too low. Face at the image has to be at minimum 1200 pixels wide. [Outdated description: The limit is not necessarily 1200 pixels anymore]2001(Warning) Image resolution for the face area is low.
Local metric codes:
3000(Error) Acne measurement aborted due to image quality concerns.3001(Error) Cannot analyze skin sagging since eyebag analysis had failed.3002(Error) Cannot analyze skin sagging since wrinkle analysis from required locations had failed.4000(Warning) Skin firmness not analyzed due to error in skin sagging analysis.5000(Error) Hair analysis aborted due to image quality concerns or internal error.5002(Error) No hair detected. Hair analysis aborted.5003(Error) Not enough hair detected. Hair analysis aborted.7000(Error) Skin Age analysis aborted due to image quality concerns or internal error.
- 1 - this status entry is an Error
- 0 - informational
Individual location specific measurements
object
Radius of the measurement
X position of the measurement in the original coordinates
Y position of the measurement in the original coordinates
Label telling if the area belongs to the so called U or T zones.
Location name
Mask shapes for visualizing findings and rendering AR. How to draw the final shape of an area?
- First, you need to draw all the shapes contained into “shapes” array in the same order you find them. Please take note that you must take care of color parameter to know if you need to add or remove it to prior shapes.
- Then, if there is a value in “masks” property, you need to “mask” the final shape geted after draw all the shapes in “shapes” array.
object
object
1 to draw and 0 to erase mask
Parameters to pass on to polygon and ellipse mask drawing functions
- Ellipse parameters - x, y, radius x, radius y, rotation degrees, start angle degrees, end angle degrees
- Polygon parameters - [[x0, y0], [x1, y1], …]
object
1 to draw and 0 to erase mask
Type of mask drawing function to use
Parameters to pass on to polygon and ellipse mask drawing functions
- Ellipse parameters - x, y, radius x, radius y, rotation degrees, start angle degrees, end angle degrees
- Polygon parameters - [[x0, y0], [x1, y1], …]
Measures calculated from measurement_locations.
More detailed information on how to interpret the value in cases when the value is categorical or array instead of a scalar number below.
In case of Makeup finding we can find here information about face shape, skin tone and eye colour.
In case of “Face shape” sum_measures, we will find a value between 1 and 6 with this meaning:
- 1: Diamond
- 2: Heart
- 3: Long
- 4: Oval
- 5: Round
- 6: Square
In case of “Eye color” we will find a value between 1 and 3 with this meaning:
- 1: Brown
- 2: Blue
- 3: Green
In case of “Skin undertone” we can find values between -1 and 1 with this meaning:
- -1: Cool
- 0: Neutral
- 1: Warm
In case of “Skin foundation RGB” we can find two values inside The first one is the RGB colour reference detected by the CV module and the second one is a string description variable that communicates three possible states of analysis:
- Foundation rgb is a valid skin tone.: the estimated skin tone is within valid skin tone range
- Foundation rgb output was limited to be a valid skin tone.: the estimated skin tone was forced to be a valid skin tone (original estimate was unrealistic for a skin tone)
- Foundation rgb is invalid.: skin tone is invalid, estimation failed.
In case of “Skin foundation raw RGB”; Same as above but the rgb values have not been corrected by skin type input parameters (skintone, skintone_rgb). String descriptions begin with “Raw foundation…” in contrast to above.
And the last one is “Skin Fitzpatrick type” that has the Fitzpatrick value detected by CV.
In case of Hair finding we can find here information about color, volume, type and frizziness.
Inside the “Hair color”, we can find two values. The first one is the actual color structure and the second one is a message (e.g. ‘Ok’). The color structure is an array of zero or more detected colors. For each color, we have an array that contains 1) index of color, 2) name of color, 3) number between zero and one that tells how common the color was in the detected hair, 4) RGB value of the closest color in our color dictionary.
Full list of color names available in our dictionary:
- Pitch_Black
- charcoal_Blackish_Brown
- Navy_Brownish_gray
- Light_Brownish
- Light_Gray_Soonstone
- Light_Gray_Icy
- Light_Gray_Silver
- White
- Dark_Brownish_Black
- Dark_Blackish_Brown
- Brown
- Pinkish_Brown
- Darker_Pink
- Coral_Pink
- Pink
- Lighter_Pink
- Lightest_Pink
- Dark_Megenta_Black
- Darker_Megenta
- Dark_Megenta
- Coral_Megenta
- Megenta
- fine_Megenta
- finer_Megenta
- Lighter_Megenta
- Lightest_Megenta
- Darkest_Purple_Black
- Darker_Purple_Black
- Fine_Dark_Purple
- Finer_Dark_Purple
- Purple
- Coral_Purple
- Light_Purple
- Lighter_Purple
- Lightest_Purple
- Darkest_Navy_Blue_Black
- Darker_Navy_Blue_Black
- Fine_Dark_Navy_Blue
- Finer_Dark_Navy_Blue
- Navy_Blue
- Coral_Navy_Blue
- Light_Navy_Blue
- Lighter_Navy_Blue
- Lightest_Navy_Blue
- Darkest_Sky_Blue_Black
- Darker_Sky_Blue_Black
- Fine_Dark_Sky_Blue
- Finer_Dark_Sky_Blue
- Sky_Blue
- Coral_Sky_Blue
- Light_Sky_Blue
- Lighter_Sky_Blue
- Lightest_Sky_Blue
- Darkest_Greenish_Cyan_Black
- Darker_Greenish_Cyan
- Fine_Dark_Greenish_Cyan
- Finer_Dark_Greenish_Cyan
- Cyan
- Coral_Cyan
- Light_Cyan
- Lighter_Cyan
- Lightest_Cyan
- Darkest_Aqua_Greenish_Black
- Darker_Aqua_Greenish
- Fine_Dark_Aqua_Green
- Finer_Dark_Aqua_Green
- Aqua_Green
- Coral_Aqua_Green
- Light_Aqua_Green
- Lighter_Aqua_Green
- Lightest_Aqua_Green
- Darkest_Greenish_Black
- Darker_Green
- Fine_Dark_Green
- Finer_Dark_Green
- Green
- Coral_Green
- Light_Green
- Lighter_Green
- Lightest_Green
- Darkest_Lime_Greenish_Black
- Darker_Lime_Green
- Fine_Dark_Lime_Green
- Finer_Dark_Lime_Green
- Lime_Green
- Coral_Lime_Green
- Light_Lime_Green
- Lighter_Lime_Green
- Lightest_Lime_Green
- Darkest_Yellowish_Black
- Darker_Yellow
- Fine_Dark_Yellow
- Finer_Dark_Yellow
- Yellow
- Lime_Yellow
- Coral_Light_Yellow
- Lighter_Yellow
- Lightest_Yellow
- Darkest_Chocolate_Brown
- Darker_Chocolate_Brown
- Fine_Brown
- Finer_Brick_Orange
- Orange
- Lite_Orange
- Coral_Light_Orange
- Lighter_Orange
- Lightest_Orange
- Darkest_Brownish_Black
- Darker_Blackish_Brown
- Fine_Brown
- Finer_Brick_Red
- Red
- Lite_Red
- Coral_Light_Red
- Lighter_Red
- Lightest_Red
- Peachy_Blonde
- Vanilla_Blonde
- light_Blonde
- Chestnut_Blonde
- Butter_Blonde
- Icy_Blonde
- Golden_Blonde
- Barbie_Blonde
- Caramel_Blonde
- Golden_Brown
- Caramel_Brown
- Toffee_Brown
- Neutral_Brown
- Bronze_Brown
- Ash_Brown
- Dark_Brown
- Deep_Brown
- Natural_Dark_Brown
- Metallic_Gray
- Soft_Silver_Gray
- Feathery_Gray
- Cool_Grey
- Frosted_Grey
- Dark_Blackish_Gray
- Shiny_Blackish_Gray
- Natural_Shiny_Gray
In case of “Hair volume”, we will find the hair volume value (number between 0 and 1).
In case of “Hair type” we will find a value between 0 and 4 with this meaning:
- 0: Coily Hair
- 1: DEPRECATED: CV will not output this anymore
- 2: Curly Hair
- 3: Straight Hair
- 4: Wavy Hair
In case of “Hair frizziness” we will find an integer label of 0 or 1 with this meaning:
- 0: Low frizziness
- 1: High frizziness
In case of “Hair frizziness ranged”, we will find the hair frizziness value (number between 0 and 1).
In case of Skin age finding, we will find the skin age value (number between 0 and 100).
For “skin_type”, the value can be any of the following:
- 0: none
- 1: normal
- 2: dry
- 3: oily
- 4: combination
- 5: sensitive
- 6: dry sensitive
- 7: oily sensitive
- 8: combination sensitive
Global value for this finding & location
Only available when requesting wrinkles_visualization
object
Total number of points that defines the wrinkle. In case of hyperpigmentation, it will always be 1 (because we are defining a spot not a line).
Average intensity for this wrinkle / hyperpigmented spot
Median value of intensity for this wrinkle / hyperpigmented spot
A custom norm for a wrinkle that combines the length and the intensities of the wrinkle location. Longer and deeper wrinkles give a higher value.
Visualization data when requesting components with _visualization postfix. This type2 schema is for hyperpigmentation_visualization, shine_visualization, acne_visualization, acne_normalized_visualization, freckles_visualization, dark_spots_visualization, pore_dilation_visualization, and skin_type_visualization
object
Total number of points that defines the wrinkle. In case of hyperpigmentation, it will always be 1 (because we are defining a spot not a line).
Average intensity for this wrinkle / hyperpigmented spot
Median value of intensity for this wrinkle / hyperpigmented spot
A custom norm for a wrinkle that combines the length and the intensities of the wrinkle location. Longer and deeper wrinkles give a higher value.
Measures calculated from measurement_locations.
More detailed information on how to interpret the value in cases when the value is categorical or array instead of a scalar number below.
In case of Makeup finding we can find here information about face shape, skin tone and eye colour.
In case of “Face shape” sum_measures, we will find a value between 1 and 6 with this meaning:
- 1: Diamond
- 2: Heart
- 3: Long
- 4: Oval
- 5: Round
- 6: Square
In case of “Eye color” we will find a value between 1 and 3 with this meaning:
- 1: Brown
- 2: Blue
- 3: Green
In case of “Skin undertone” we can find values between -1 and 1 with this meaning:
- -1: Cool
- 0: Neutral
- 1: Warm
In case of “Skin foundation RGB” we can find two values inside The first one is the RGB colour reference detected by the CV module and the second one is a string description variable that communicates three possible states of analysis:
- Foundation rgb is a valid skin tone.: the estimated skin tone is within valid skin tone range
- Foundation rgb output was limited to be a valid skin tone.: the estimated skin tone was forced to be a valid skin tone (original estimate was unrealistic for a skin tone)
- Foundation rgb is invalid.: skin tone is invalid, estimation failed.
In case of “Skin foundation raw RGB”; Same as above but the rgb values have not been corrected by skin type input parameters (skintone, skintone_rgb). String descriptions begin with “Raw foundation…” in contrast to above.
And the last one is “Skin Fitzpatrick type” that has the Fitzpatrick value detected by CV.
In case of Hair finding we can find here information about color, volume, type and frizziness.
Inside the “Hair color”, we can find two values. The first one is the actual color structure and the second one is a message (e.g. ‘Ok’). The color structure is an array of zero or more detected colors. For each color, we have an array that contains 1) index of color, 2) name of color, 3) number between zero and one that tells how common the color was in the detected hair, 4) RGB value of the closest color in our color dictionary.
Full list of color names available in our dictionary:
- Pitch_Black
- charcoal_Blackish_Brown
- Navy_Brownish_gray
- Light_Brownish
- Light_Gray_Soonstone
- Light_Gray_Icy
- Light_Gray_Silver
- White
- Dark_Brownish_Black
- Dark_Blackish_Brown
- Brown
- Pinkish_Brown
- Darker_Pink
- Coral_Pink
- Pink
- Lighter_Pink
- Lightest_Pink
- Dark_Megenta_Black
- Darker_Megenta
- Dark_Megenta
- Coral_Megenta
- Megenta
- fine_Megenta
- finer_Megenta
- Lighter_Megenta
- Lightest_Megenta
- Darkest_Purple_Black
- Darker_Purple_Black
- Fine_Dark_Purple
- Finer_Dark_Purple
- Purple
- Coral_Purple
- Light_Purple
- Lighter_Purple
- Lightest_Purple
- Darkest_Navy_Blue_Black
- Darker_Navy_Blue_Black
- Fine_Dark_Navy_Blue
- Finer_Dark_Navy_Blue
- Navy_Blue
- Coral_Navy_Blue
- Light_Navy_Blue
- Lighter_Navy_Blue
- Lightest_Navy_Blue
- Darkest_Sky_Blue_Black
- Darker_Sky_Blue_Black
- Fine_Dark_Sky_Blue
- Finer_Dark_Sky_Blue
- Sky_Blue
- Coral_Sky_Blue
- Light_Sky_Blue
- Lighter_Sky_Blue
- Lightest_Sky_Blue
- Darkest_Greenish_Cyan_Black
- Darker_Greenish_Cyan
- Fine_Dark_Greenish_Cyan
- Finer_Dark_Greenish_Cyan
- Cyan
- Coral_Cyan
- Light_Cyan
- Lighter_Cyan
- Lightest_Cyan
- Darkest_Aqua_Greenish_Black
- Darker_Aqua_Greenish
- Fine_Dark_Aqua_Green
- Finer_Dark_Aqua_Green
- Aqua_Green
- Coral_Aqua_Green
- Light_Aqua_Green
- Lighter_Aqua_Green
- Lightest_Aqua_Green
- Darkest_Greenish_Black
- Darker_Green
- Fine_Dark_Green
- Finer_Dark_Green
- Green
- Coral_Green
- Light_Green
- Lighter_Green
- Lightest_Green
- Darkest_Lime_Greenish_Black
- Darker_Lime_Green
- Fine_Dark_Lime_Green
- Finer_Dark_Lime_Green
- Lime_Green
- Coral_Lime_Green
- Light_Lime_Green
- Lighter_Lime_Green
- Lightest_Lime_Green
- Darkest_Yellowish_Black
- Darker_Yellow
- Fine_Dark_Yellow
- Finer_Dark_Yellow
- Yellow
- Lime_Yellow
- Coral_Light_Yellow
- Lighter_Yellow
- Lightest_Yellow
- Darkest_Chocolate_Brown
- Darker_Chocolate_Brown
- Fine_Brown
- Finer_Brick_Orange
- Orange
- Lite_Orange
- Coral_Light_Orange
- Lighter_Orange
- Lightest_Orange
- Darkest_Brownish_Black
- Darker_Blackish_Brown
- Fine_Brown
- Finer_Brick_Red
- Red
- Lite_Red
- Coral_Light_Red
- Lighter_Red
- Lightest_Red
- Peachy_Blonde
- Vanilla_Blonde
- light_Blonde
- Chestnut_Blonde
- Butter_Blonde
- Icy_Blonde
- Golden_Blonde
- Barbie_Blonde
- Caramel_Blonde
- Golden_Brown
- Caramel_Brown
- Toffee_Brown
- Neutral_Brown
- Bronze_Brown
- Ash_Brown
- Dark_Brown
- Deep_Brown
- Natural_Dark_Brown
- Metallic_Gray
- Soft_Silver_Gray
- Feathery_Gray
- Cool_Grey
- Frosted_Grey
- Dark_Blackish_Gray
- Shiny_Blackish_Gray
- Natural_Shiny_Gray
In case of “Hair volume”, we will find the hair volume value (number between 0 and 1).
In case of “Hair type” we will find a value between 0 and 4 with this meaning:
- 0: Coily Hair
- 1: DEPRECATED: CV will not output this anymore
- 2: Curly Hair
- 3: Straight Hair
- 4: Wavy Hair
In case of “Hair frizziness” we will find an integer label of 0 or 1 with this meaning:
- 0: Low frizziness
- 1: High frizziness
In case of “Hair frizziness ranged”, we will find the hair frizziness value (number between 0 and 1).
In case of Skin age finding, we will find the skin age value (number between 0 and 100).
For “skin_type”, the value can be any of the following:
- 0: none
- 1: normal
- 2: dry
- 3: oily
- 4: combination
- 5: sensitive
- 6: dry sensitive
- 7: oily sensitive
- 8: combination sensitive
Okmeans the metric was correctly calculateInvalidmeans the image had serious issues that prevented the metric being calculated
Global value for this finding
Global value for this finding before normalization. DEPRECATED.
Only available when requesting wrinkles_visualization
object
Total number of points that defines the wrinkle. In case of hyperpigmentation, it will always be 1 (because we are defining a spot not a line).
Average intensity for this wrinkle / hyperpigmented spot
Median value of intensity for this wrinkle / hyperpigmented spot
A custom norm for a wrinkle that combines the length and the intensities of the wrinkle location. Longer and deeper wrinkles give a higher value.
Visualization data when requesting components with _visualization postfix. This type2 schema is for hyperpigmentation_visualization, shine_visualization, acne_visualization, acne_normalized_visualization, freckles_visualization, dark_spots_visualization, pore_dilation_visualization, and skin_type_visualization
object
Total number of points that defines the wrinkle. In case of hyperpigmentation, it will always be 1 (because we are defining a spot not a line).
Average intensity for this wrinkle / hyperpigmented spot
Median value of intensity for this wrinkle / hyperpigmented spot
A custom norm for a wrinkle that combines the length and the intensities of the wrinkle location. Longer and deeper wrinkles give a higher value.
object
All available codes, whether they result in error or warning and their descriptions:
General codes:
99(Error) [custom context] undefined failure. [NEW]
Image Preprocessor codes:
100(Error) Unable to process: image must be in RGB color format.101(Error) Unable to process: Image resolution too small.102(Error) Unable to downsample image resolution: Image aspect ratio too extreme.103(Warning) Image too dark. Increase exposure.104(Warning) Image is overexposed. Find more diffuse lighting.
Face Detection codes:
201(Error) Unable to detect a face202(Warning) Multiple faces detected. Only the best fit face is analyzed.203(Warning) Face detection is uncertain. Analysis quality is compromized.204(Warning) Face detection is very uncertain. Analysis quality is unreliable.205(Warning) More margin space around the face needed. Results might be compromised. Take the picture a bit further away.206(Error) Facial landmarks are invalid. Aborting processing.
Normalizer codes:
301(Error) The detected face resolution is too small. Take a photo closer to the target.302(Error) Face is too much tilted to the side. Face straight at the camera.303(Warning) Face is possibly tilted to the side. Face straight at the camera.304(Error) Face is too much tilted down. Face straight at the camera.305(Warning) Face is possibly tilted down. Face straight at the camera.306(Warning) Face is possibly tilted up. Face straight at the camera.307(Warning) Image too dark at the face area. Increase exposure/light to the face.308(Warning) Image is overexposed at the face area. Find more diffuse lighting or reduce exposure.309(Warning) The face area blue channel is clipping (overexposed). Reduce exposure or adjust color balance.310(Warning) The face area green channel is clipping (overexposed). Reduce exposure or adjust color balance.311(Warning) The face area red channel is clipping (overexposed). Reduce exposure or adjust color balance.312(Warning) The face has unsymmetric exposure. Find even illumination.313(Warning) The face area has hard shadows. Find more diffuse lighting.314(Warning) Eyeglasses detected. Remove eyeglasses before taking the photo. Results are unreliable.315(Error) Forehead is partially outside the image. Make sure the whole face fits the image. Aborting processing.316(Error) Lower face is partially outside the image. Make sure the whole face fits the image. Aborting processing.317(Error) Face right side is partially outside the image. Make sure the whole face fits the image. Aborting processing.318(Error) Face left side is partially outside the image. Make sure the whole face fits the image. Aborting processing.319(Warning) Face is too tightly framed in the image. Leave more space around the face.
Skin masking codes:
401(Warning) Unable to sample skin. Acne/Hyperpigmentation results are unreliable.
Miscellaneous global codes:
500(Error) All metrics had an error.
Makeup analysis codes:
1000(Error) Skin tone input not defined. Unable to proceed.1101(Error) Eyes look too much closed. Keep eyes open. Eye color analysis aborted.1102(Warning) Eyes look quite closed. Keep eyes open.1111(Error) Eyes region is too dark. Improve lighting on the eyes. Eye color analysis aborted.1112(Warning) Eyes region is quite dark. Improve lighting on the eyes.1121(Error) Eyes whites have a heavy color cast. Correct white balance settings on the camera. Eye color analysis aborted. [OBSOLETE]1122(Warning) Eyes whites have a significant color cast. Correct white balance settings on the camera.1191(Error) Eye color detection processing error 1. Eye area has no color information.1192(Error) Eye color detection processing error 2. Eye area is too dark.1200(Warning) Color balance not corrected due to eye area low image quality. Skin foundation color analysis might be unreliable
Pore dilation:
2000(Error) Image resolution for the face area is too low. Face at the image has to be at minimum 1200 pixels wide. [Outdated description: The limit is not necessarily 1200 pixels anymore]2001(Warning) Image resolution for the face area is low.
Local metric codes:
3000(Error) Acne measurement aborted due to image quality concerns.3001(Error) Cannot analyze skin sagging since eyebag analysis had failed.3002(Error) Cannot analyze skin sagging since wrinkle analysis from required locations had failed.4000(Warning) Skin firmness not analyzed due to error in skin sagging analysis.5000(Error) Hair analysis aborted due to image quality concerns or internal error.5002(Error) No hair detected. Hair analysis aborted.5003(Error) Not enough hair detected. Hair analysis aborted.7000(Error) Skin Age analysis aborted due to image quality concerns or internal error.
- 1 - this status entry is an Error
- 0 - informational
Example
{ "face_area": { "bounding_box": [ 599.276392063823, 193.01919020926903, 1445.276392063823, 1207.019190209269 ], "rotation": -7.943472 }, "message": "OK", "results": [ { "description": "eyes", "local_warnings": [ { "idx": 308, "description": "Image is overexposed at the face area. Find more diffuse lighting or reduce exposure.", "isError": 0 } ], "measurement_locations": [ { "AOI_radius_o": 113.2046222948142, "AOI_x_o": 590.2353768319389, "AOI_y_o": 1026.3631232435266, "ut_zone": "none", "description": "Global", "mask_shapes": { "coordinates": "original", "masks": { "color": 1, "params": [ [ 154.30033286045997, 747.3805463094317 ], [ 521.4668465690055, 737.1814764841944 ], [ 491.6876895399641, 860.1568234387048 ], [ 166.96841450785098, 1203.4314856155102 ] ] }, "shapes": [ { "color": 1, "type": "polygon", "params": "" } ] }, "measures": [ { "description": "eyebags", "value": "0.112" } ], "value": 0.8713174414298542, "visualization_data": [ { "intensity": "", "length": 27, "mean_intensity": 0.24008360411190074, "median_intensity": 0.24880123111804126, "length_weighted_intensity": 0.24880123111804126, "x": [ 288.77660561081603, 287.2933463712191 ], "y": [ 51.61554565114869, 51.600719797776975 ] } ] } ], "sum_measures": [ { "description": "eyebags", "value": "0.112" } ], "message": "Ok", "value": 0.23211, "value_raw": 3.21, "visualization_data": [ { "intensity": "", "length": 27, "mean_intensity": 0.24008360411190074, "median_intensity": 0.24880123111804126, "length_weighted_intensity": 0.24880123111804126, "x": [ 288.77660561081603, 287.2933463712191 ], "y": [ 51.61554565114869, 51.600719797776975 ] } ] } ], "status": [ { "idx": 308, "description": "Image is overexposed at the face area. Find more diffuse lighting or reduce exposure.", "isError": 0 } ]}