Skip to content
This repository has been archived by the owner on Mar 11, 2021. It is now read-only.

TdroL/parking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

# Parking
W projekcie znajdują się dwa programy:

1. crawler.exe - czyta bazę danych, wykrywa wolne miejsca i zapisuje spowrotem wynik
2. detector.exe - program pomocniczy do ustalania parametrów kamery

Te programy są od siebie niezależne, ale większość dllek jest dla nich obydwu. Inne pliki (t.j: *.ilk, *.pdb) można usunąć -- ja tego nie zrobiłem, bo i tak cały czas MSVC mi je generuje; to jak walka z wiatrakami.

## Instrukcja obsługi:
### crawler.exe
Działająca wersja jest umieszczona w katalogu Debug -- crawler.exe z Release nie działa przez buga w MySQL Connectorze, eh...
Przyjmuje parametry (koplejność bez znaczenia):

* -h host     -- adres do bazy danych, domyślnie: "tcp://127.0.0.1:3306"
* -u user     -- nazwa użytkownika, domyślnie: "root"
* -p pass     -- hasło użytkownika, domyślnie: "" (puste)
* -s schema   -- nazwa bazy danych, domyślnie: "parking"
* -d delay    -- opóźnienie, jeśli nie ma czego skanować (żeby nie zapychał systemu na 100%), domyślnie: "1" (1 sekunda)
* -i interval -- czas ważności ostatniego skanu (tzn. parking nie będzie skanowany częściej niż co X sekund), domyślnie: "30" (30 sekund)
* -g          -- po każdym skanie pokazuje to, co zwrócił detektor (obraz); jest to przełącznik -- nie bierze żadnej wartości, domyślnie: (nie ustawiony)

Przykładowe wywołanie:

	crawler.exe -h tcp://127.0.0.1:3306 -u root -s parking -d 5 -i 60

**UWAGA!** Jeśli będzie odpalany z konsoli, to nie mam pojęcia, jak go zatrzymać bez używania "Menadżera zadań". Jak uruchamiacie z dwukliku, to zigorujcie tę uwagę.

### detector.exe
Tu działają obie wersje -- Release i Debug -- wydajnościowo nie powinny się różnić.
Przyjmuje parametry (koplejność bez znaczenia):

* -a address        -- adres do kamery lub pliku obrazu, domyślnie: (domyślna zadziała tylko u mnie, więc i tak trzeba ustawić)
* -t type           -- typ kamery (sterownik); dostępne: "file", domyślnie: "file" (zignorujcie ten parametr, on jest "na przyszłość")
* -o output         -- jeśli podana zostanie ścieżka, to obraz wynikowy nie zostanie wyświetlony, a zapisany pod podaną ścieżkę, domyślnie: "" (puste)
* -h threshold high -- parametr do algorytmu Canny, określa górną granicę różnicy koloru (cokolwiek to znaczy), domyślnie: 100.0
* -l threshold low  -- parametr do algorytmu Canny, określa dolną granicę różnicy koloru, zalecane wartości to ~1/3 z *threshold high*, domyślnie: 33.0
* -c scale          -- skalowanie obrazu, przydatne jeśli obraz jest za duży lub za mały i detektor nie bardzo chce zwracać poprawne wartości, domyślnie: 1.0
* -n threshold scan -- określa stosunek białych kropek do czarnych na danym miejscu -- jeśli ten stosujek będzie przekroczony, to miejsce zostanie oznaczone jako zajęte, domyślnie: 0.125
* -s spots          -- lista miejsc parkingowych w formacie (P1-P4 to rogi): P1[x] P1[y] P2[x] P2[y] P3[x] P3[y] P4[x] P4[y] --po 8 wartości dla każdego miejsca, podane zgodnie z kierunkiem wskazówek zegara (patrz rys. 1 poniżej), domyślnie: (zigorujcie -- tak jak adres pasuje tylko dla mnie)

	           P1(x,y)      P2(x,y)
	              *------------*
	             /            /
	            /            /
	           /            /
	          /            /
	         /            /
	        *------------*
	    P4(x,y)      P3(x,y)
Rys. 1 -- ASCII art w najlepszej odsłonie

Przykładowe wywołanie:

	detector.exe -a ../assets/Parking-Lot.jpg -h 100 -l 33.3 -n 0.1875 -o result.png -s 389 326 446 343 347 393 289 370 337 309 384 324 283 368 234 348 289 294 332 307 230 346 185 328 245 280 283 291 181 326 141 311 206 268 240 278 138 309 105 296 170 257 200 266 101 294 70 282 138 248 164 256 66 280 40 271

	detector.exe -a ../assets/preview1.jpg -o result.png -h 160 -l 50 -c 1.25 -s 258 231 274 240 246 270 230 261 276 241 293 251 265 282 249 272 228 264 249 273 216 305 200 296 247 275 263 284 235 316 219 307 108 300 124 310 96 344 80 334 127 311 144 321 115 355 99 345 146 322 163 332 134 366 118 356

	detector.exe -a ../assets/transformers.jpg -h 300 -l 125 -s 132 149 162 173 147 184 116 159 155 134 187 157 166 171 135 147 177 121 206 145 189 156 158 133 198 109 228 129 209 142 181 119 214 98 244 118 230 127 200 107 229 90 259 108 246 117 216 97 244 81 274 99 261 107 231 89 262 70 292 87 276 97 247 80 114 160 144 186 127 198 97 170 146 188 184 220 166 233 129 199 212 144 250 166 228 183 192 157 231 131 266 154 252 164 215 142 247 120 281 143 268 152 233 129 260 110 293 133 283 141 249 118 276 100 307 122 295 132 262 109 294 88 321 110 309 120 278 99 126 201 163 235 146 248 109 214 94 171 124 199 106 211 76 183

	detector.exe -a ../assets/transformers.jpg -h 300 -l 125 -n 0.09725 -s 132 149 162 173 147 184 116 159 155 134 187 157 166 171 135 147 177 121 206 145 189 156 158 133 198 109 228 129 209 142 181 119 214 98 244 118 230 127 200 107 229 90 259 108 246 117 216 97 244 81 274 99 261 107 231 89 262 70 292 87 276 97 247 80 114 160 144 186 127 198 97 170 146 188 184 220 166 233 129 199 212 144 250 166 228 183 192 157 231 131 266 154 252 164 215 142 247 120 281 143 268 152 233 129 260 110 293 133 283 141 249 118 276 100 307 122 295 132 262 109 294 88 321 110 309 120 278 99 126 201 163 235 146 248 109 214 94 171 124 199 106 211 76 183

	detector.exe -a ../assets/P3030027ParkingLot_wb.jpg -h 200 -l 60 -s 124 439 226 480 160 489 75 444 195 431 303 465 248 475 147 438 271 419 364 451 322 461 219 427 319 408 425 435 377 444 288 415 384 396 506 427 436 432 338 406 456 513 527 499 548 577 485 594 541 495 591 480 619 555 564 573 599 475 645 462 686 534 631 551

## Porady, jak ustawiać parametry *threshold high*, *threshold low*, *threshold scan* i *scale*
1. Jeśli na pustych miejscach jest dużo białych kropek, to należy większyć *threshold high* i odpowiednio *threshold low*.
2. Jeśli na detektor nie wykrywa zajętych miejsc, to albo zmniejszyć *threshold high* i odpowiednio *threshold low* (ale tak, by nie zasyfiło pustych miejsc; metoda niezalecana), albo zwiększyc *threshold scan* o około 10% (metoda jest zalecana). **UWAGA!** Wartość ta nie powinna przekroczyć 0,5. Z oczywistych względów też nie powinna być mniejsza lub równa 0.
3. Jeśli miejsca parkingowe na obrazach są za małe lub za duże, co powoduje trudności w dobraniu odpowiednich *thresholdów*, to można użyć skalowania, by odpowiednio zmniejszyć za duże miejsca, lub zwiększyć te małe.

## Dodawanie parkingu, kamery i miejsc do bazy danych
1. Dodać parking (jeśli jeszcze nie dodany):

	INSERT INTO parking (`id`) VALUE (*to wasze id*)

2. Dodać kamerę (jeśli nie istnieje):

	INSERT INTO camera (`id`, `parking_id`, `address`, `type`, `threshold_high`, `threshold_low`, `threshold_scan`, `scale`) VALUE (*`id` może być NULL [auto increment]; `parking_id` musi zgadzać się z tym z tabeli "parking"; `address` - ścieżka do pliku; `type` - wartość "file" [inne i tak nie obsługiwane]; reszta parametrów z detector.exe*)

3. Dodać miejsca:

	INSERT INTO spot (`id`, `status`, `camera_id`, `p1x`, `p1y`, `p2x`, `p2y`, `p3x`, `p3y`, `p4x`, `p4y`) VALUES (*`id` może być NULL [auto increment]; `camera_id` musi się zgadzać z tym z tabeli "camera"; `status`: 1 - na zdjęciu miejsce wolne, 2 - zajęte, 3 - niedostępne/zablokowane; p1-p4 - pozycje rogów miejsc parkingowych PODANE ZGODNIE Z KIERUNKIEM WSKAZÓWEK ZEGARA*), (*...*),...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published