From cce179a065ddac8415e7b0748a38da367f24ef3e Mon Sep 17 00:00:00 2001 From: Kristofers Solo Date: Sat, 24 Dec 2022 11:55:54 +0200 Subject: [PATCH] Update README.md --- README.md | 26 ++++++++++++++++++++++++++ media/red.jpg | Bin 0 -> 13545 bytes 2 files changed, 26 insertions(+) create mode 100644 media/red.jpg diff --git a/README.md b/README.md index da4c776..0a0192a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,29 @@ # Traffic Light Detector +Traffic Light recognition and color detection ![Tests](https://github.com/kristoferssolo/Traffic-Light-Detector/actions/workflows/tests.yml/badge.svg) + +## Description +See [DESCRIPTION.md](./DESCRIPTION.md) + +![Red light](./media/red.jpg) + +## Installation + +```shell +git clone https://github.com/kristoferssolo/Traffic-Light-Detector +cd Traffic-Light-Detector +pip install . +``` + +## Examples +`./main.py` -- Creates necessary directories in `/assets/` +`./main.py -i` -- Detects traffic lights and their signal color for all files located in `/assets/images_in/` and saves them in `/assets/images_out/`. +`./main.py -c ` -- Uses webcam or any camera to detect traffic lights in real time. +`./main.py -sc ` -- Plays sound file located in `/assets/sound/move.mp3` whenever green light signal is detected via camera. + +Replace `` with your camera number specified by the operating system. Probably `0` or `1`, but can be higher. + +## To Do +- [ ] Write unit tests. +- [ ] Create/find better traffic light model for better traffic light recognition. diff --git a/media/red.jpg b/media/red.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ef8afa9a2432802a3471829dcbed918b10dcf8cf GIT binary patch literal 13545 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 A=>Px# literal 0 HcmV?d00001