I started to pick opencv (computer vision) for learning. I’ve been fascinated with this technology and what it can do. Today, computer vision is on our phone camera to find face and set the focus, or trigger the shutter when we smile, or following the object we lock. Let’s pick an example, Facebook. FB recognise the faces in an uploaded photo. CV technology allows FB to suggest friends found in that photo to be tagged. And even, FB learns from your past tagging, build information from collected faces, so it can improves its accuracy of suggestion. Another example is surveillance camera like in Bourne movies, the camera scans multiple faces at once and search for someone matching. It is real CV application. Last year, Google release Google Vision API that open even bigger opportunity to use the visual data to recognize, quantify even more to trigger physical world. Self-driving car is one of top application of computer vision and sensors.
I purchased a book to start the learning journey in cv world. The book promised that it would be easy to learn and apply. I tried to follow the basic steps of image processing and drawing shapes like rectangular, circle and mask it to the image. I am not finished with the book, but so far it is easy to follow.
I use my 3rd Raspberry Pi device for CV. It is Raspberry Pi 3 with 16 GB storage, equipped with Pi Camera version 1.3 and integrated LCD 3.5 inch screen. This 3rd unit is intended for desktop computing, entertainment and imaging (point-shoot camera, dashboard camera, computer vision). The 5 GB remaining space is the result of giving space to Retropie + ROMs, Pixel Desktop, Kodi and OpenCV as the last joining function.
I set my own goals in this learning process, the first two are to measure the distance between my car and car in front. The 2nd is to make self-driving RC car. Well, it is still long road to reach the goal, but the journey is enjoyable.
About counting coin, this is one of practice that the book explains. The difference from the book is, the counting that I do is not from a photo. I like to have something direct, a real-time counting, from a live video.
Counting coin is an easy task for our brain, but definitely not for a computer. The idea is simple, computer to count objects from what camera is seeing. From the computer point of view, this involves some steps for the computer to capture the image, separate the object from the background, then identify the object by its edge, find contour and finally count. During these processing steps, the camera take continuous capture.
Curious about what happens back in the computer’s kitchen? Here is the process tour:
- Capture original image
2. Convert to grayscale
3. Apply blur
4. Find the edge
5. Find the contour
6. Count number of contour
The camera is continuously capturing the image and computer to process each image sequentially. And this process is repeated forever until break key is pressed.
Raspberry Pi 3 hardware is enough to perform all those steps without any problem. The time from capturing the image to the processing of 1st step till the 6th is fast. I think it is around 18-20fps (my estimation), if the capture size is 500px. Giving a good frame rate to the video, although may not be as smooth as 30fps video, but certainly more than sufficient for the job. Hat-off to Raspberry Pi hardware that make this possible!