βββββββ ββββββ ββββββββββββββββββββ βββββββββββββββββ βββββββ ββββ βββ
ββββββββ ββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ βββ
βββ ββββββββββββ βββ ββββββ βββ ββββββββββββββββββββ βββββββββ βββ
βββ βββββββββββ βββ ββββββ ββββ βββββββββββββββββββββ βββββββββββββ
ββββββββββββ βββ βββ ββββββββ βββββββ ββββββββββββββββββββββββββ ββββββ
βββββββ βββ βββ βββ ββββββββ βββββ ββββββββββββββ βββββββ βββ βββββ
Rozpoznawanie tablic rejestracyjnych i kontrola bramy β iOS + Web Panel
GateVision to system automatycznej kontroli bramy wjazdowej. Aplikacja iOS w czasie rzeczywistym rozpoznaje tablice rejestracyjne, porΓ³wnuje je z bazΔ danych i automatycznie steruje bramΔ . Wykorzystuje CoreML (model YOLO wytrenowany na tablicach) do detekcji regionΓ³w tablic oraz Apple Vision Framework do odczytu tekstu (OCR).
W tle dziaΕa serwer HTTP (port 6600) z peΕnym panelem webowym do zarzΔ dzania systemem z dowolnego urzΔ dzenia w sieci lokalnej.
ΕΉrΓ³dΕo obrazu (iPhone / Raspberry Pi / 70mai)
β
βββ π§ CoreML YOLO β Detekcja regionu tablicy β Crop β Vision OCR β Odczyt tekstu
β
βββ ποΈ SQLite β Sprawdzenie tablicy w bazie β Otwarcie/blokada bramy
β
βββ π HTTP :6600 β Panel webowy (status, logi, zarzΔ
dzanie, debug)
GateVision oferuje trzy tryby rozpoznawania tablic:
| Tryb | Silnik | Opis |
|---|---|---|
| PeΕna klatka | Apple Vision OCR | OCR na caΕym obrazie β prosty, bez ML, dobre na krΓ³tki dystans |
| YOLO ML | CoreML + Vision wrapper | Model YOLO wykrywa region tablicy, obraz jest wycinany i wysyΕany do OCR β lepsza skutecznoΕΔ na dalszy dystans |
| CoreML Direct | CoreML bezpoΕrednio | Ten sam model YOLO, ale z rΔcznym preprocessingiem (resize 640Γ640, CVPixelBuffer) i bezpoΕrednim MLModel.prediction() β peΕna kontrola, przydatne do debugowania |
Klatka z kamery (portrait)
β
βββ CoreML YOLO β bounding boxy tablic (normalized coords)
β
βββ Crop + padding + upscale (min 150px) β wyciΔty region tablicy
β
βββ Apple Vision OCR (.accurate) β tekst tablicy + confidence
β
βββ Regex filter β [A-Z]{1,3}\d{3,5}[A-Z]{0,2}
β
βββ System gΕosowania (N detekcji w oknie M klatek) β decyzja o otwarciu bramy
- 3 tryby detekcji β PeΕna klatka, YOLO ML, CoreML Direct
- 2 tryby OCR β Tablica (filtruje rejestracje, steruje bramΔ ) / Wszystko (wyΕwietla caΕy tekst β do kalibracji)
- System gΕosowania β wymaga N powtΓ³rzeΕ tej samej tablicy w oknie M klatek przed otwarciem bramy
- Cooldown β zapobiega wielokrotnemu otwarciu na tΔ samΔ tablicΔ
- iPhone β wbudowana kamera z wyborem obiektywu (0.5Γ, 1Γ, 5Γ)
- Raspberry Pi β MJPEG stream po HTTP z kamery USB podΕΔ czonej do Pi
- 70mai β dashcam przez RTSP stream
- 720p (1280Γ720) β niska latencja, mniejsze zuΕΌycie baterii
- 1080p (1920Γ1080) β balans jakoΕci i wydajnoΕci
- 4K (3840Γ2160) β maksymalny zasiΔg detekcji
- Lista autoryzowanych tablic z danymi wΕaΕcicieli
- Oznaczanie pojazdΓ³w flotowych i przypisywanie do uΕΌytkownikΓ³w (AD)
- Blokowanie/odblokowywanie tablic bez usuwania z systemu
- PeΕna historia detekcji z klatkΔ z momentu rozpoznania (JPEG snapshot)
- Automat stanowy: ZAMKNIΔTA β OTWIERANIE β OTWARTA β ZAMYKANIE β ZAMKNIΔTA
- Konfigurowalne czasy otwierania, otwarcia i zamykania
- RΔczne sterowanie z aplikacji i panelu web
- Status β stan bramy, metryki OCR, podglΔ d kamery live (MJPEG stream), przyciski sterowania
- Logi β tabela detekcji z wyszukiwarkΔ i podglΔ dem zdjΔΔ
- Tablice β dodawanie, edycja, blokowanie, usuwanie tablic
- Ustawienia β tryb OCR, tryb detekcji, ΕΊrΓ³dΕo kamery, rozdzielczoΕΔ
- Debug β diagnostyka OCR, info o kamerze, baza danych, logi ML z toggle/clear/copy
- MLLogger β szczegΓ³Εowe logi pipeline'u ML w czasie rzeczywistym
- Debug ML β przechwytywanie wyciΔtych regionΓ³w tablic ze wszystkich detekcji ML (nie tylko zmatchowanych)
- Debug tab β diagnostyka OCR, parametry kamery, stany bramy, testy sterowania
- Loading screen β wizualizacja inicjalizacji (baza, model ML, kamera, serwer)
http://<IP-iPhone>:6600
| Metoda | Endpoint | Opis |
|---|---|---|
GET |
/ |
Dashboard HTML |
GET |
/api/status |
Stan bramy, FPS, ostatnia tablica, ΕΊrΓ³dΕo kamery |
GET |
/api/snapshot |
Aktualna klatka JPEG |
GET |
/api/stream |
MJPEG stream (podglΔ d live) |
GET |
/api/live_log |
Ostatnie 60 detekcji na ΕΌywo |
GET |
/api/log?q= |
Historia detekcji z wyszukiwaniem |
GET |
/api/log/:id/snapshot |
Klatka JPEG z danego logu |
GET/POST |
/api/plates |
Lista / dodaj tablicΔ |
PUT/DELETE |
/api/plates/:id |
Edytuj / usuΕ tablicΔ |
POST |
/api/plates/:id/toggle_block |
PrzeΕΔ cz blokadΔ |
POST |
/api/gate/open |
OtwΓ³rz bramΔ |
POST |
/api/gate/close |
Zamknij bramΔ |
GET/POST |
/api/settings |
Odczyt / zapis ustawieΕ (tryb OCR, detekcja, kamera, rozdzielczoΕΔ) |
GET |
/api/debug |
PeΕna diagnostyka (OCR, kamera, brama, ML logi, baza) |
POST |
/api/ml_log/toggle |
WΕΔ cz/wyΕΔ cz logowanie ML |
POST |
/api/ml_log/clear |
WyczyΕΔ logi ML |
- Xcode 15+
- iPhone z iOS 16+ (zalecany iPhone 12+ dla Neural Engine)
- Sklonuj repo
- OtwΓ³rz
Gatevision.xcodeprojw Xcode - Build & Run (Cmd+R) na urzΔ dzeniu fizycznym (kamera nie dziaΕa w symulatorze)
Model ML (trained_plates_detection.mlpackage) jest doΕΔ
czony do repo β Xcode kompiluje go automatycznie do .mlmodelc przy buildzie.
| Tryb | Kiedy uΕΌywaΔ |
|---|---|
| Tablica | Produkcja β filtruje europejskie tablice, steruje bramΔ |
| Wszystko | Kalibracja β pokazuje kaΕΌdy rozpoznany tekst z confidence |
Przed otwarciem bramy aplikacja zbiera minVotes detekcji tej samej tablicy w oknie voteWindowSize klatek. Eliminuje faΕszywe odczyty.
DomyΕlnie: 2 gΕosy w oknie 6 klatek
ZAMKNIΔTA β [openingTime]s β OTWARTA β [openDuration]s β [closingTime]s β ZAMKNIΔTA
DomyΕlnie: 2s 10s 3s
[A-Z]{1,3}\d{3,5}[A-Z]{0,2}ObsΕuguje: WA12345, KR999, PO55123AB, GD00001 itd.
CaΕa aplikacja iOS mieΕci siΔ w jednym pliku (GateVisionApp.swift) β single-file architecture.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β iPhone β
β β
β βββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β
β β ΕΉrΓ³dΕo kamery ββββββΆβ CameraEngine β β
β β β’ iPhone cam β β β’ CoreML YOLO detekcja β β
β β β’ Raspberry Pi β β β’ Apple Vision OCR β β
β β β’ 70mai RTSP β β β’ System gΕosowania β β
β βββββββββββββββββββ β β’ Automat stanowy bramy β β
β β β’ SQLite logging β β
β βββββββββββββββββββ β β β
β β SwiftUI UI βββββββ @Published properties β β
β β β’ Status tab β βββββββββββββββββ¬ββββββββββββββββ β
β β β’ Logi tab β β β
β β β’ Tablice tab β βββββββββββββββββΌββββββββββββββββ β
β β β’ Settings tab β β WebServer β β
β β β’ Debug tab β β NWListener :6600 β β
β βββββββββββββββββββ β β’ REST API (JSON) β β
β β β’ HTML dashboard β β
β WiFi βββββββββββββββββββΆβ β’ MJPEG stream β β
β βββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Gatevision/
βββ GateVisionApp.swift # CaΕa aplikacja iOS (single file)
β βββ Enums # GateState, DetectionMode, OCRMode, CameraSource,
β β # LensType, CameraResolution, LoadStep
β βββ DebugMLEntry # Model danych debug ML
β βββ Design System (GV) # Kolory, Liquid Glass modifiers
β βββ Database # SQLite wrapper (plates + access_log + snapshots)
β βββ MLLogger # Logger pipeline'u ML
β βββ WebServer # NWListener HTTP + REST API + dashboard
β βββ CameraEngine # AVFoundation + CoreML + Vision OCR + gate FSM
β β βββ captureOutput # Przetwarzanie klatek z iPhone
β β βββ handleExternalFrame # Przetwarzanie klatek z Pi/70mai
β β βββ runCoreMLDetection # YOLO ML (via Vision wrapper)
β β βββ runDirectCoreMLDetection # CoreML Direct (manual preprocessing)
β β βββ ocrCroppedRegions # Crop + OCR na wyciΔtych regionach
β βββ SplashScreen # Loading screen z progress bar
β βββ RootView # TabView z 5 zakΕadkami
β βββ StatusTab # Kamera live + GateCard + metryki
β βββ LogTab # Aktualna sesja + Historia + Debug ML
β βββ PlatesTab # CRUD lista tablic
β βββ SettingsTab # Konfiguracja + Debug nawigacja
β βββ DebugTab # Diagnostyka, czasy bramy, ML logi, testy
β βββ MLLogView # PrzeglΔ
darka logΓ³w ML
β
βββ dashboard.html # Panel webowy (HTML/CSS/JS)
βββ trained_plates_detection.mlpackage # Model CoreML YOLO (detekcja tablic)
βββ trained_plates_detection.pt # Model PyTorch (ΕΊrΓ³dΕo)
MIT β szczegΓ³Εy w pliku LICENSE.
Made with β€οΈ for smart gate automation
GateVision przetwarza wszystko lokalnie na urzΔ dzeniu β ΕΌadne dane nie sΔ wysyΕane na zewnΔ trz.