chromaframe-sdk
Deterministic, privacy-preserving Rust SDK for color measurement, quality/confidence scoring, and goal-specific candidate ranking.
Features
| Feature | Purpose |
|---|---|
| default | Core deterministic measurement and ranking |
vision |
Region extraction abstractions and overlay types |
vision-helper |
Local Python/MediaPipe helper adapter |
live-gemini |
Gated provider smoke tests only; not used by local vision flows |
Quickstart
= "0.1"
Use manual region samples when you already have measured RGB samples, or enable vision-helper for local automatic region extraction.
Local vision helper
See vision-helper/README.md. Run parser setup before analysis:
Required helper environment:
CHROMAFRAME_VISION_HELPER_PYTHON=/absolute/path/to/python
CHROMAFRAME_MEDIAPIPE_TASK_PATH=/absolute/path/to/face_landmarker.task
CHROMAFRAME_FACE_PARSING_ONNX_PATH=/absolute/path/to/resnet18.onnx
CHROMAFRAME_VISION_ASSET_MANIFEST=/absolute/path/to/resnet18.manifest.json
Product image analysis requires an approved baseline face-parser ONNX asset and manifest. Sparse or absent parser hair remains not_measured with semantic_parser_hair_evidence_low after the parser runs. Beard/stubble uses a conservative lower-face proxy: approximate/landmark_lower_face_proxy means enough color/texture evidence exists to use it as low-confidence facial-hair evidence; low_evidence/clean_shaven_or_low_stubble_evidence means the proxy is skin-like or ambiguous and is not converted into beard samples for scoring. This is not a definitive no-beard classifier, and baseline parsers must not claim beard/moustache/stubble detection.
Privacy
Debugimplementations redact image bytes, pixels, masks, private paths, and provider/helper payloads.- Image metadata is not retained by default.
- Overlay artifacts are SDK-local opt-in only and must not be committed.
- Reports describe deterministic color fit and uncertainty only.
Development
From repository root:
Publishing
SDK releases use sdk-vX.Y.Z tags, require the tag version to match sdk/Cargo.toml, list package contents, and run a locked dry-run publish before publishing. See ../docs/releasing.md.