pageauc / speed-camera

A Unix, Windows, Raspberry Pi Object Speed Camera using python, opencv, video streaming, motion tracking. Includes a Standalone Web Server Interface, Image Search using opencv template match and a whiptail Admin Menu Interface Includes picam and webcam Plugins for motion track security camera configuration including rclone sync script. watch-app allows remotely controller camera configuration from a remote storage service name. Uses sqlite3 and gnuplot for reporting. Recently added openalpr license plate reader support.
Apache License 2.0
967 stars 170 forks source link

[Questions] Various #8

Closed legecha closed 7 years ago

legecha commented 7 years ago

Hi Claude, awesome project thanks!

From what I gather, your project requires the distance from the camera to the points it is getting the coordinates from. Would it not be possible to measure two points on the road and just make sure the program's points where it checks are lined up to those? Maybe putting a two little flags in the ground, measuring the distance, then making sure those flags line up to the detection points in the program? Or is this too naive from a math point of view?

Next question - do you think it would be a big job to make this project be able to recognise number (license) plates too? Obviously you'd have to be at the correct angle to be able to view them and potentially have to run at a higher resolution. Any pointers on what are of OpenCV might be able to achieve this?

Finally, for my curiosity ;) Did you have any experience in image processing before starting with OpenCV? How did you find the learning curve? I'm primarily a web based programmer but have a good decade programming experience so wondering whether there any background reading/studying you can suggest before diving in head first!

Thanks again, looking forward to giving this a try.

pageauc commented 7 years ago

question 1 Yes you could use markers at the distance away that the speed is to be measured. Basically it is just needs to know what actual distance a pixel represents at the specific distance away from the camera. You could put two markers on the road, path or whatever measure the actual distance between them then take a calibration shot and measure. If the camera is pointed perpendicular to the road the distance is greater to the far left and right so I use a vehicle as the actual measuring stick since it is easy to trigger the calibration shot. You could also just drive by at a known speed and change the camera settings accordingly. Obviously you would need to do this several times to get calibration right. You only have to calibrate once for a particular setup then you can take the camera out of calibration mode. Then any moving object that is the at the specific distance away should give a reasonable result. Lots of things can affect accuracy like cars in opposite lanes or people on sidewalks Etc.

question 2 There is a github open license plate recognition project here https://github.com/openalpr/openalpr You need to get close (optically or physically) to get good recognition results. At present I am looking a adding a search to my speed camera that will pattern match a specific vehicle, then find best match in all photos. This will use a similar technique to my camera-tracking project https://github.com/pageauc/rpi-cam-track See Readme and YouTube references on the page for details of template matching in opencv. Basically it is returns best and worse fit results of a smaller picture in another picture. Using this I should be able to find all cars that are the same or similar (will have to flip for opposite directions)

question 3

I worked 38 years for an Electrical Utility Nuclear facility. Started with TSO mainframe stuff and left as a senior IT analyst. Started programming with original Apple ][ and had a cpm card installed. This helped me move into the developing IT department. IT is many things and programming is just one part. Lots of different duties in IT that do not need programming skills. It is like sports where you need an elite athlete not run of the mill. I developed good skills but chose not to pidgin hole myself and enjoyed a variety of duties. Programming skills helped no matter where I worked in IT. I did not enjoy IT politics but preferred to solve and prevent problems from occurring. Some people got recognize for fixing their systems when they broke due to poor design or maintenance. I preferred to do things to make systems more robust with automatic fail over. More work but pays off in the long run.

I retired 11 years ago and started OpenCV stuff approx Aug 2014. I also had to learn python. Took be a while to adjust to using white space as code block markers. I liked pascal programming but python took a while to get used to. Programming skill can be leaned but like sports some people will become elite and a spectrum of skills below that. The hard part in programming is finding/developing an efficient algorithm programming solution to a problem. And some problems may require multiple solutions. Quite often I try and throw out several attempts and start again. I enjoy doing real time stuff and it tends to be harder to do. This is just one of several hobbies that I do just for my own fun and enjoyment. GitHub allows me to share my work.

Claude ...

On Mon, Jul 24, 2017 at 4:36 AM, Leonard Challis notifications@github.com wrote:

Hi Claude, awesome project thanks!

From what I gather, your project requires the distance from the camera to the points it is getting the coordinates from. Would it not be possible to measure two points on the road and just make sure the program's points where it checks are lined up to those? Maybe putting a two little flags in the ground, measuring the distance, then making sure those flags line up to the detection points in the program? Or is this too naive from a math point of view?

Next question - do you think it would be a big job to make this project be able to recognise number (license) plates too? Obviously you'd have to be at the correct angle to be able to view them and potentially have to run at a higher resolution. Any pointers on what are of OpenCV might be able to achieve this?

Finally, for my curiosity ;) Did you have any experience in image processing before starting with OpenCV? How did you find the learning curve? I'm primarily a web based programmer but have a good decade programming experience so wondering whether there any background reading/studying you can suggest before diving in head first!

Thanks again, looking forward to giving this a try.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/pageauc/rpi-speed-camera/issues/8, or mute the thread https://github.com/notifications/unsubscribe-auth/AFr1ZMcmgEx1WEUWn8fmZ2CPtkkkvUvNks5sRFejgaJpZM4Og4Vq .

-- See my YouTube Channel at http://www.youtube.com/user/pageaucp