Install
openclaw skills install @eyedea-ai/make-and-model-recognitionDetect the largest vehicle from an image using TrafficEye car-box detection, run make and model recognition for that vehicle, and return all license plates attached to the same road-user payload. Use when the user wants the dominant vehicle, vehicle classification, car box detection, make and model recognition, or the plates associated with the main vehicle in a local image file. You can obtain API key and tokens from https://trafficeye.ai.
openclaw skills install @eyedea-ai/make-and-model-recognitionUse this skill when the user wants the largest detected vehicle from an image, along with its make and model classification and every detected license plate belonging to that same road user.
{ "status": ..., "data": ... }.box.position area.roadUser, box, plates, area, and source, preserving the full selected road-user payload.https://trafficeye.ai/recognition.{"tasks":["DETECTION","OCR","MMR"],"requestedDetectionTypes":["BOX","PLATE"],"mmrPreference":"BOX"}.apikey.TRAFFICEYE_API_KEY: required unless passed explicitly to the helper.TRAFFICEYE_API_URL: optional, defaults to https://trafficeye.ai/recognition.TRAFFICEYE_API_KEY_MODE: one of header, bearer, form, query. Default: header.TRAFFICEYE_API_KEY_NAME: key name for header, form, or query mode. Default: apikey.TRAFFICEYE_FILE_FIELD: multipart field for the image. Default: file.TRAFFICEYE_REQUEST_FIELD: multipart field for the JSON request. Default: request.TRAFFICEYE_REQUEST_JSON: JSON string to include as the request field. By default this is {"tasks":["DETECTION","OCR","MMR"],"requestedDetectionTypes":["BOX","PLATE"],"mmrPreference":"BOX"}.TRAFFICEYE_TIMEOUT_S: optional timeout in seconds. Default: 30.Only TRAFFICEYE_API_KEY is required for the default live API flow. The other variables are optional overrides.
Setup your API key:
export TRAFFICEYE_API_KEY='YOUR_REAL_KEY'
Use the road-user helper:
python3 recognize_road_user.py /absolute/path/to/image.jpg
For structured output:
python3 recognize_road_user.py /absolute/path/to/image.jpg --format json
If the deployment expects Bearer auth:
TRAFFICEYE_API_KEY_MODE=bearer python3 recognize_road_user.py /absolute/path/to/image.jpg
If the deployment needs an explicit request payload:
TRAFFICEYE_REQUEST_JSON='{"tasks":["DETECTION","OCR","MMR"],"requestedDetectionTypes":["BOX","PLATE"],"mmrPreference":"BOX"}' python3 recognize_road_user.py /absolute/path/to/image.jpg --format json
Equivalent to the documented public API example:
curl -X POST \
-H "Content-Type: multipart/form-data" \
-H "apikey: YOUR_API_KEY_HERE" \
-F "file=@image.jpg" \
-F 'request={"tasks":["DETECTION","OCR","MMR"],"requestedDetectionTypes":["BOX","PLATE"],"mmrPreference":"BOX"}' \
https://trafficeye.ai/recognition
python3 recognize_road_user.py <image-path> --format json.box, mmr, and the complete plates array.You can validate the selection logic without calling the API:
python3 recognize_road_user.py --response-json-file examples/sample_response.json --format json
The helper prints JSON with this top-level structure:
{
"roadUser": {"box": {}, "plates": [], "mmr": {}},
"box": {},
"plates": [],
"area": 0,
"source": {
"combinationIndex": 0,
"roadUserIndex": 0,
"path": "combinations[0].roadUsers[0]"
}
}
roadUser is the original selected road-user payload from TrafficEye.box repeats roadUser.box for convenience.plates repeats roadUser.plates for convenience and may be empty.area is the computed rectangle area used for winner selection.source identifies where the selected road user came from in the API response.data.combinations[].roadUsers[], then combinations[].roadUsers[], then roadUsers[], and finally nested road-user payloads discovered recursively.https://www.trafficeye.ai/api.mmr, box, all plates, and their scores are preserved.