This project aims to monitor a parking lot with computer vision and provide a mobile phone based interface for communicating availability of parking space.
Introduction The idea for this project comes from a real life problem. In my suburban neighbourhood most people don't have have their own driveway. Instead there are a couple of small parking lots scattered around. Coming home from work sometimes means circling round for a free parking spot. This is a nuisance that I hope to fix with this project. While this specific situation is the inspiration, the project should be adaptable to suit different situations and purposes.
Goal Monitor the number of free parking spaces in a public parking lot. This number is stored on a server and can be accessed by mobile phone.
Conclusion This project is functional, it does what is stated in the goal. In that sense this project is a success. However, it is more a rough proof of concept than a deploy-able package. I have been in a bit over my head here, since this stuff is pretty new to me. I lost a lot of time learning basics and chasing dead ends, so the current status is far less than what I aimed for. I am not done though, more is to come. And since the contest is now over, I feel free to invite the community to participate. Most importantly, I learned a lot en had great fun. I hope others can use this project in their learning process.
Method The basic method I used is described here. I used lots of code comments to provide more detailed information. Specific instructions about recreating the project are in the Github-repository.
The current number of cars in the parking lot is stored in a database running on a Flask web server. Visiting the server returns this car count. Analysis is done on video images from a camera that is aimed at the entry of a parking lot. The background is subtracted, so only moving objects remain. The resulting image is noisy, therefor it is cleaned up. The moving objects are tracked to determine whether it is moving into or out of the parking lot. Analysis on the moving object is done to determine whether it is a car. If a car is detected moving in or out of the parking lot, a query is sent to the database increasing / decrease the car count. The app sends requests to the server, and displays the information. The number can also but retrieved with a browser.
Footage I found a video with a lot of really good edge cases that I could never produce myself. Therefore I decided to develop using this video and then try it for real near my house. I did not manage this within the time of the contest.
What's next? There is plenty left to do. First off I want to rework the car detection. I currently use a HAAR-cascade with a feature file that is trained on the backside of cars. However, it is not very good. In the sample video one car is not detected, probable because it is from the front. It did search for other options, but these where not feasible in time I had left. Next up is adding a timed update and an audio response to the app. Maybe a GPS-trigger. After that, increasing web security by switching to POST-request and adding a password. Then the options of the app can be increased with the option to set/correct the number in the database and a request for the last frame from the camera.
Lastly A HUGE 'Thank you' to the folks at Imaginghub, Basler and UP-Board for providing the UP Embedded Vision Starter Kit. I used it to developed this project.
|twenty-twenty||pushed 07d5e5653340cac11357655d2df8510bdfbbcf4c||2018-11-30 08:16:17 UTC|
|twenty-twenty||pushed 1b7597bc8e064647a89e89bb71d6b935ff38efbd||2018-11-30 08:16:07 UTC|
|twenty-twenty||pushed 554bd375674bcb7bcfa59c99ef4dae94cca81c51||2018-11-30 08:12:45 UTC|
|twenty-twenty||pushed 58a9890839806903e9e47abd587e6d7de74effbc||2018-11-30 08:06:38 UTC|
|twenty-twenty||pushed bedf0cfa084db10982150b2f0e5e77140bf816cf||2018-11-30 08:06:14 UTC|
|twenty-twenty||pushed 79b8aa7b3a532022f64b4db9386084ae3e636612||2018-11-30 08:05:55 UTC|
|twenty-twenty||pushed fb4eaa632b2c2098ce53cdf503597664d1ffd9d4||2018-11-30 00:58:24 UTC|
|twenty-twenty||pushed 2255a8242025af5bad153d4c34f8a25d024e4385||2018-11-30 00:58:09 UTC|
|twenty-twenty||pushed 4764a37f32956058b3a5d2d172c5b0ae9fcf0d1d||2018-11-30 00:57:27 UTC|
|twenty-twenty||pushed 4c3b575af570bb593b37eb2cfe5e2b6db6d9e652||2018-11-30 00:54:51 UTC|
|twenty-twenty||pushed f1f1fb98e24e3260106b2c6658a4365a5c669cda||2018-11-30 00:54:08 UTC|
|twenty-twenty||pushed bb4834fa5afa60c672c605b91034725e3649b868||2018-11-30 00:53:53 UTC|
|twenty-twenty||pushed 999df4f2a7acb6ea4ed5b061f0b4dc78a9ed3c8c||2018-11-30 00:53:07 UTC|
|twenty-twenty||pushed e25f524811e46bf73917f4a9c6e00af11426d568||2018-11-30 00:45:45 UTC|
|twenty-twenty||pushed e4cc77970b70c07131da54abdd2d51e6e2436035||2018-11-30 00:45:01 UTC|
|twenty-twenty||pushed c8448d61702e00f4107b868e046a7cb4f5d30f36||2018-11-30 00:43:54 UTC|
|twenty-twenty||pushed 26504cf8de2b57d0d835b0ff5ffcc3a05d2d76b2||2018-11-30 00:34:53 UTC|
|twenty-twenty||pushed 6ceb45844103b86da4eeb13bc8c4c5adc3f1ecf7||2018-11-30 00:34:33 UTC|
|twenty-twenty||pushed db780c59769f9b87768f33689994f07c50974dac||2018-11-30 00:33:41 UTC|
|twenty-twenty||pushed 161e4b24451bc29ba3de453f25dbef6ac9ac2a7f||2018-11-30 00:32:52 UTC|
|twenty-twenty||pushed e053109c0d569b60e2ed93aa5b4ee278d1088ddc||2018-11-30 00:32:23 UTC|
|twenty-twenty||pushed a841076ec80857e570aeb30497358f45ca476091||2018-11-30 00:32:00 UTC|
|twenty-twenty||pushed b1f3c3ded0888d1d0104dfbbb6bc95e03d2305a4||2018-11-30 00:31:42 UTC|
|twenty-twenty||pushed d93450b26d1586013fa8d0f033cf14047c512c9a||2018-11-30 00:29:29 UTC|
|twenty-twenty||pushed 699f21623a51160567fdc75a688a5925bbfe76e6||2018-11-30 00:23:56 UTC|
|twenty-twenty||pushed fe62a46b78df9fc975418b54b8f5147025b2fe17||2018-11-30 00:10:43 UTC|
|twenty-twenty||pushed cbb6e30bc6adb16e42e025ebda6e3863ded98d47||2018-11-29 23:24:54 UTC|
|twenty-twenty||pushed e7e961d921b3919c1a3377fc9b0d74b472e7d7d8||2018-11-29 23:23:28 UTC|
|twenty-twenty||pushed e34f9fb7a5d923fae022cbea35475503df009fd4||2018-11-29 23:22:13 UTC|
|twenty-twenty||pushed ec7589a673ac7162e52f0ef7c6e4f5075bd053ca||2018-11-29 23:20:23 UTC|
|ParkingLotMonitor1||Project in action||jpg|
|ParkingLotMonitor2||Project in action||jpg|