In which we use OpenCV to track a laser.
Building on my article about using HSV thresholding to isolate features in video frames, below is a video showing the use of OpenCV to track a red laser. The majority of the algorithm is the same as presented in the previous article; the only addition is actually determining the area of interest after thresholding. In order to preventing spoiling anyone's fun, I am not going to post the code as of now.
Hint: think about how to find the largest area in white after thresholding.
If you would like to compare algorithms or just want to know what I did, drop me a note via the contact form.
In preliminary testing, the algorithm seems robust enough to handle changing lighting conditions as well as differing background colors; however, the angle of reflection of the laser can cause issues. For best results, the laser should be relatively perpendicular to the image plane. As the laser approaches being parallel to the image plane, less laser light is reflected back to the camera. The same applies to irregular objects or surfaces that scatter the laser at angles away from the camera. This can be seen at the end of the video when the laser is reflected off the lamp shade.
Testing was done using a Logitech C920. Depending on the laser used and ambient lighting conditions, turning off auto white balance may prevent the intensity of the laser from being interpreted as white.
As far as applications, I leave that to the reader.