The problem

In UNO, tracking whose turn it is (with skips, reverses, and draw-fours) is easy to lose track of; a companion device can watch the discard pile and keep the table in sync.

The commercial viability hinges on one question: can commodity computer vision recognize UNO cards accurately enough (color + value) to be trusted?

That feasibility had to be proven before committing to a fixed-price build contract.

The approach

Build a simulator-first MVP that validates the CV pipeline end-to-end before any hardware or app work, so the go/no-go decision rests on measured accuracy.

Detect and rectify the card geometry, infer color via HSV analysis, then classify the value by normalized-correlation template matching against canonical card templates.

Wrap the pipeline in a test harness, a benchmark tool that reports per-card accuracy, and a mock-device emulator that mirrors the eventual ESP32 protocol — deferring the Flutter desktop scaffold until the CV proved out.

What I built

  • A modular OpenCV CV pipeline: geometry rectification, color classification, and template-matching card-value classifier over a canonical card set
  • A benchmark harness that runs the pipeline over image sets and emits per-card and per-image accuracy reports with confidences
  • A card-recognition test harness and a synthetic fixture set generated from the official card-template artwork
  • A mock-device emulator (FastAPI + WebSockets, ESP32 protocol shape) to stand in for firmware during feasibility
  • A full test suite covering the classifier, color, geometry, templates, pipeline, emulator protocol, and benchmark metrics
  • Contract-decision docs: feasibility report, design spec, proposal, and handoff for the intended Flutter app + ESP32 build
  • Python
  • OpenCV
  • numpy
  • Pillow
  • FastAPI
  • WebSockets
  • Flutter (planned)
  • ESP32 (planned)
  • pytest

Result

The CV pipeline ran end-to-end and hit 92.6% on 54 synthetic fixtures — clearing the 90%+ feasibility gate — with the report explicitly cautioning that the real go/no-go must be re-run on physical webcam captures, not template-derived synthetic images.

  • 92.6% classification accuracy on 54 synthetic card fixtures (feasibility report), against a 90%+ contract-decision gate
Demo available on request← Back to all work

Want something like this for your business?

Book a free consult