Je to už bezmála 30 let, co jsme s bráchou závodili na autodráze a strašně toužili po počítadle ujetých kol, aby byly závody spravedlivé.
Dnes mám vlastního syna, a tak jsem se k téhle staré myšlence vrátil. Díky pokročilé umělé inteligenci a strojovému učení se mi během jednoho odpoledne podařilo postavit počítadlo založené na kamerovém snímání dráhy a počítačovém vyhodnocování průjezdů.

Mechanické provedení
Základní rám držící kameru jsem vyrobil z dřevěných hranolků 2 × 2 cm, sešroubovaných vruty a natřených černou barvou. Kamera je přišroubovaná přibližně 20 cm nad středem dráhy.
Po celém obvodu rampy jsem připevnil LED pásek, který slouží jako přísvit pro kameru. Rampa stojí volně, takže je potřeba ji při každém použití srovnat na správné místo podle obrazu z kamery.

Program pro počítání kol
Základem celého počítadla je obyčejná USB kamera umístěná nad startovní/cílovou čárou. Kamera snímá prostor nad autodráhou a program v počítači sleduje dvě předem nastavené detekční oblasti — jednu pro každou dráhu.
Původně jsem uvažoval o rozpoznávání barev aut nebo barevných značek na střechách, ale nakonec se ukázalo, že to není potřeba. Na každé dráze může být vždy jen jedno auto, takže stačí hlídat konkrétní část obrazu. Když se v detekční oblasti změní obraz, program to vyhodnotí jako průjezd auta cílem.
Program je napsaný v Pythonu a pro zpracování obrazu používá knihovnu OpenCV. Kromě samotného počítání kol umí také startovní odpočet, zvuky, měření časů kol, výsledkovou obrazovku a označení vítěze zlatým pohárem.
Funkce programu
Program si při nastavení uloží obraz prázdné cílové oblasti jako referenci. Potom při závodě neustále porovnává aktuální obraz s touto referencí.
Zjednodušeně:
prázdná trať = reference
aktuální obraz = obraz z kamery
rozdíl mezi nimi = změna v detekční zóně
Když rozdíl překročí nastavenou hodnotu, program to vyhodnotí jako průjezd auta.
Každá dráha má vlastní detekční zónu:
Dráha 1 → detekční oblast 1
Dráha 2 → detekční oblast 2
Aby se jeden průjezd nezapočítal víckrát, je v programu ochranná prodleva. Po započítání průjezdu program krátkou chvíli ignoruje další detekce ve stejné dráze.
Program zároveň řeší i start ze startovní čáry. Pokud auta při startu stojí přímo v detekční zóně, nezapočítá se to jako kolo. Program nejdřív počká, až auto zónu opustí, a první kolo započítá až při dalším průjezdu cílem.
Aktuální verze programu umí:
- – snímat obraz z USB kamery
- – nastavit dvě detekční zóny pro dvě dráhy
- – uložit nastavení zón do souboru
- – načíst nastavení při dalším spuštění
- – spustit závod startovním odpočtem
- – přehrát zvuky při odpočtu
- – počítat kola pro obě dráhy
- – měřit celkový čas
- – měřit časy jednotlivých kol
- – zobrazit nejlepší a průměrné kolo
- – dopočítat průměrnou rychlost
- – určit vítěze
- – nechat druhé auto dojet
- – zobrazit výsledkovou obrazovku
- – označit vítěze pohárem
Instalace Pythonu a knihoven
Program je napsaný v Pythonu, takže je potřeba mít v počítači nainstalovaný Python. Používám ho ve Windows, kde funguje s běžnou USB kamerou.
Potřebné knihovny se nainstalují příkazem:
pip install opencv-python numpy pygame
Volitelně je možné nainstalovat ještě knihovnu pygrabber, která umí vypsat názvy kamer připojených přes DirectShow:
pip install pygrabber
Ta není pro samotný závod nutná, ale hodí se při hledání správné kamery. Právě to mi nakonec zabralo nejvíce času. Musel jsem dokonce zakázat integrovanou kameru v notebooku, aby program začal používat obraz z USB kamery.
Soubory programu
V jedné složce máme hlavní program:
autodraha_pocitadlo_kol.py
Vedle něj je složka se zvuky a v ní potřebné zvuky:
sounds/
beep.wav – krátké pípnutí při odpočtu 3, 2, 1
go.wav – zvuk startu
finish.wav – zvuk při dojetí vítěze
Pokud zvuky chybí, program nespadne. Jen poběží bez nich.
Spuštění programu
Program se spouští z příkazové řádky:
python autodraha_pocitadlo_kol.py
Pokud je v počítači více kamer, dá se zkusit vybrat jiná kamera:
python autodraha_pocitadlo_kol.py --camera 1
nebo:
python autodraha_pocitadlo_kol.py --camera 2
Pro vypsání dostupných kamer:
python autodraha_pocitadlo_kol.py --list-cameras
Pokud je nainstalovaný pygrabber, jde vypsat i názvy DirectShow kamer:
python autodraha_pocitadlo_kol.py --list-dshow
Nastavení detekčních zón
Po spuštění programu se zobrazí obraz z kamery. V režimu nastavení jsou vidět dvě detekční zóny a hodnoty rozdílu obrazu.

Ovládání zón:
1 – nastavit zónu pro dráhu 1
2 – nastavit zónu pro dráhu 2
A – srovnat zóny podle dráhy 1
K – uložit nastavení
L – načíst nastavení
Nejdřív se pomocí myši nastaví zóna pro první dráhu. Potom se nastaví poloha zóny pro druhou dráhu. Program hlídá, aby obě zóny měly stejnou velikost a byly ve stejné vzdálenosti od startovní čáry. To je důležité, aby měly obě dráhy stejné podmínky.
Nastavení se ukládá do souboru:
autodraha_config.json
Při dalším spuštění si program uložené zóny načte automaticky.
Uložení reference
Velmi důležitým krokem je uložení reference prázdné tratě.
Před závodem je potřeba dát auta pryč z detekčních oblastí a stisknout klávesu R.
Tím si program uloží obraz prázdné tratě. Od té chvíle porovnává aktuální obraz s tímto stavem.
Po uložení reference už je důležité nehýbat kamerou, rampou ani osvětlením. Když se něco posune, je lepší referenci uložit znovu.
Správný postup před závodem je:
1. Spustit program
2. Zkontrolovat detekční zóny
3. Dát auta mimo detekční zóny
4. Stisknout R
5. Postavit auta na start
6. Stisknout S
Při startu už auta v detekčních zónách být můžou. Start referenci nepřepisuje.

Start závodu
Závod se spustí klávesou S.
Program zobrazí odpočet:
3
2
1
GO!
A zároveň přehraje zvuky:
3, 2, 1 → beep.wav
GO → go.wav
Po startu začne běžet časomíra a program začne počítat průjezdy obou drah.

Po dojetí vítěze se přehraje:
finish.wav
Závod se ale neukončí okamžitě. Druhá dráha může ještě dojet svůj počet kol. Teprve potom se zobrazí finální výsledková obrazovka.
Ovládání programu
Přehled kláves:
S start závodu / nový závod
R uložit referenci prázdné tratě
1 nastavit zónu dráhy 1
2 nastavit zónu dráhy 2
A srovnat zóny
K uložit nastavení
L načíst nastavení
+ zvýšit počet kol
– snížit počet kol
T testovací režim
P uložit snímek obrazovky do preview.jpg
C reset závodu
Q / ESC konec programu
Počet kol se dá měnit přímo v programu pomocí kláves + a -.
Výsledková obrazovka
Po dokončení závodu se zobrazí výsledky obou drah.

Program ukáže:
– vítěze
– čas vítěze
– čas druhé dráhy
– rozdíl mezi auty
– počet kol
– nejlepší kolo
– průměrné kolo
– průměrnou rychlost
Vítězná dráha je označená zlatým pohárem.
Průměrná rychlost se počítá podle délky jednoho kola nastavené v programu:
TRACK_LENGTH_M = 5.13
Pokud má trať jinou délku, stačí tuto hodnotu změnit.
Osvětlení a spolehlivost detekce
Ukázalo se, že pro spolehlivou detekci je hodně důležité stálé osvětlení. Kamera reaguje na změny jasu a program je může vyhodnotit jako změnu v detekční oblasti.
Proto jsem na držák kamery přidal LED pásek jako přísvit. Detekce se tím výrazně zlepšila. Je ale potřeba dát pozor na poblikávání LED pásku, hlavně pokud je napájený ze stejného zdroje jako autodráha. Motory aut mohou způsobovat poklesy napětí a rušení.
Ještě lepší by byl samostatný zdroj pro LED osvětlení, ale kvůli jednoduchosti používám společné napájení.
Nastavení citlivosti
Citlivost detekce se nastavuje hodnotou:
DETECTION_THRESHOLD = 47.0
V testovacím režimu program ukazuje hodnotu rozdílu obrazu pro každou dráhu. Podle toho se dá práh doladit.
Princip je jednoduchý:
- hodnota bez auta musí být pod prahem
- hodnota při průjezdu auta musí být nad prahem
Například:
- bez auta kolem 40
- s autem kolem 54
- práh 47
Když program detekuje falešné průjezdy, práh je potřeba zvýšit. Když naopak průjezdy nestíhá nebo vynechává, práh je potřeba snížit nebo zvětšit detekční zóny.
Závěr
Opravdu hodně mě překvapilo, jak jednoduchá nakonec byla tvorba samotného programu. Těžko se mi hledají správná slova, ale fakt jsem nečekal, že to půjde tak rychle. Použil jsem ChatGPT 5.5 Thinking a upřímně říkám, že sám bych tohle opravdu nedal.
Stačilo popsat základní myšlenku, probrat pár detailů a funkční základ programu byl na první pokus hotový. Nejvíce času mi nakonec nezabrala samotná tvorba programu, ale řešení nefunkční kamery. I to se ale nakonec podařilo vyřešit.
Celkově vzato, když budu počítat jen čistou práci, zabralo celé počítadlo včetně výroby držáku kamery zhruba jeden den.
Velkou výhodou tohoto řešení je, že není potřeba nijak upravovat samotnou autodráhu. Nemusí se vrtat do dílů, přidávat optické závory ani řešit spínače v kolejích. Stačí kamera nad cílovou čárou, stabilní osvětlení a počítač s programem.
