Real-time pose detection from camera using RTMPose and ONNX Runtime, built with Flutter.
This project is also a practical example of cross-platform camera access in Flutter using flutter_webrtc — a single implementation that works on all six platforms without platform-specific code.
| Platform | Status |
|---|---|
| Android | ✅ |
| iOS | ✅ |
| Web | ✅ |
| Windows | ✅ |
| Linux | ✅ |
| macOS | ✅ |
- Real-time 17-keypoint body pose detection
- Runs fully on-device via ONNX Runtime (no server required)
- Camera input via WebRTC — works on mobile, desktop, and browser
- RTMPose-t model — lightweight and fast
flutter pub get
flutter run -d chrome # web
flutter run -d windows # Windows desktop
flutter run -d macos # macOS desktop
flutter run -d linux # Linux desktop
flutter run # Android or iOS (device/emulator)The ONNX model file must be placed at assets/models/rtmpose.onnx.
See assets/models/README.md for download instructions.
lib/
main.dart — app entry point
screens/
pose_screen.dart — camera + inference UI
services/
pose_detector.dart — ONNX Runtime inference
camera_service.dart — WebRTC camera capture
painters/
skeleton_painter.dart — keypoint overlay rendering
RTMPose-t exported to ONNX format.
Input: 1 × 3 × 256 × 192 (RGB, normalized).
Output: 1 × 17 × 3 (x, y, score per keypoint, COCO format).
| Component | Library |
|---|---|
| UI | Flutter 3.x |
| Inference | flutter_onnxruntime |
| Camera | flutter_webrtc |
| Image processing | image |
MIT