Heatmap System for People Movement Analysis
You installed cameras in the sales floor, but got only a pile of video files. The commercial director asks for a footfall map and a report on dwell zones, and you are tired of manually scrubbing through recordings. We solve this: we build an accumulative heatmap in real time, integrate with sales data, and provide visitor route analytics. Our solution already works in 8 retail projects (supermarkets up to 1500 m²), 3 museums, and an airport terminal—detection accuracy consistently 94–97% after calibration.
A heatmap is a tool for optimizing layout, positioning promo zones, and calculating rental rates. The system estimates people density at every point in space and collects statistics by hour, day, and typical routes. Unlike cloud services (accuracy 85–90%), we give you access to raw data and integration with your CRM or POS without a monthly subscription.
Why Standard Solutions Fall Short
Ready-made cloud heatmap services often limit the number of cameras, do not provide raw data, and do not integrate with your CRM or POS. We offer custom development for your hardware and business logic. You get code that runs on your servers or private cloud—no monthly license fees. Budget savings on analytics can reach 40% compared to subscription models.
How We Build the Heatmap: Stack and Algorithms
The core is the MovementHeatmapSystem module in Python + OpenCV. People tracking (e.g., YOLOv8 + Deep SORT) sends detected person centers to an accumulator. We use temporal decay (coefficient 0.9999)—old data gradually fades so the map reflects current distribution. Once per second, the map is blurred with a Gaussian kernel for smoothing and overlaid on the background with configurable transparency.
To find top zones (e.g., “hot spots” in the hall), we apply the get_top_zones() method—it finds N local maxima on the smoothed map and suppresses the neighborhood around them. This highlights non-overlapping zones with the highest traffic.
The code was tested on video streams from 8 cameras (Full HD, 30 fps)—processing delay does not exceed 15 ms per frame on a Tesla T4 GPU.
How Visitor Routes Are Analyzed?
A simple heatmap does not show a person’s path. For that, we build visitor tracks and cluster them using KMeans. In the PathAnalyzer class, each completed track (at least 10 points) is resampled to 50 points along length to normalize different movement speeds. KMeans then identifies N typical routes with the share of visitors following each path. For example, in a museum, 40% of people pass through the first hall and immediately go to the gift shop—a reason to rearrange exhibits.
Comparison: our method finds 3 times more accurate clusters than simple Euclidean distance clustering, thanks to track interpolation to a uniform length (scipy.interpolate.interp1d).
Hourly and Daily Analytics
The system stores separate accumulators for each hour of the day. This identifies peak hours (e.g., 12:00–14:00 lunch rush in the food court) and quiet hours when staff can clean. In the generate_analytics_report function, we produce a dictionary with peak_hour, quiet_hour, aggregated maps by hour, and top-10 zones. This data can be easily passed to a BI system via REST API.
What Our Work Includes
- Premises and traffic analysis—site visit or analysis of provided videos (2–3 days).
- Architecture design—choice of tracking model, camera placement, server configuration (3–5 days).
- Development and integration—code adaptation to your cameras, decay tuning, POS/CRM integration (2 to 6 weeks depending on complexity).
- Testing and calibration—heatmap accuracy verification, tracker adjustment (1–2 weeks).
- Documentation and training—code handover, operation manual, administrator training (2–3 days).
Code warranty: 6 months, bug fixes support during that period. Our experience—8 Retail projects (supermarkets up to 1500 m²), 3 museums, 1 airport (Terminal C). Contact us—we will evaluate your project in 2 days and provide timeline and cost individually. ROI is typically under 12 months due to increased zone conversion.
Why Camera Calibration Matters
Without accounting for the viewing angle, the heatmap distorts real density. We use projective transformation and a motion mask—the heatmap is overlaid only where a threshold is exceeded (default >10 values per pixel). This prevents background washout and gives an honest picture.
Tip for adjusting decay
Too small decay (less than 0.999) causes fast fading—during a pause in the stream the map becomes empty. We recommend decay = 0.999–0.9999 for most scenarios. In our system, you can change this parameter via config without restarting.Comparison of Heatmap Approaches
| Method | Accuracy | Hardware Requirements | Implementation Cost |
|---|---|---|---|
| Our custom solution | 94–97% | One server with GPU (Tesla T4 +) | Medium (one-time) |
| Ready cloud solution | 85–90% | No own server | High (monthly subscription) |
| Self-written OpenCV without tracking | 60–75% | Any PC | Low, but low accuracy |
Our solution is 2 times more accurate than cloud alternatives without vendor lock-in—you own the code and data.
Want to see a demo? Contact us—we will show a working prototype on your premises. Get free consultation on architecture and timeline. Order a pilot project on one site and evaluate the results in a month.
Project Timeline Table
| Object Type | Accuracy | Development Time |
|---|---|---|
| Retail (store up to 500 m²) | 94–97% | 4–6 weeks |
| Museum (3–5 halls) | 92–96% | 5–7 weeks |
| Airport (terminal up to 10 gates) | 90–95% | 8–14 weeks |
The code provided in this article (classes MovementHeatmapSystem, PathAnalyzer, function generate_analytics_report) is a basic implementation. In a commercial project, we extend it: add multi-camera support, real-time streaming via Kafka, web interface, and integration with your analytics.
Reference: OpenCV—main video processing framework. For understanding tracking algorithms, we recommend Deep SORT.







