Robot Vision with OpenCV
Programmer & team lead
A run of projects on teaching a robot to see: image manipulation from scratch, then object detection, then robots acting on what they find.
The groundwork was writing the algorithms by hand in Java — rotations, translations, blurs, masks, edge detection, along with color correction, detection, equalization, grayscaling, and histograms.
From there we moved to OpenCV in Python. First color detection with runtime-adjustable HSV tolerances, then differencing a rolling average of recent frames to pick out motion as it happened. Then object detection with Canny edges and contours, which we tested by counting Skittles and M&Ms by color — genuinely hard when a candy matches the background or overlaps another of the same color, and a useful lesson in how much tolerance tuning real vision takes.
The last stretch put it on hardware in MSU's robotics lab. Blur, edges, and thresholding got a robot following a solid line quickly; a dotted line took adding center-of-mass tracking of the filtered objects in frame, and a 180° sweep at the end of the trail to confirm it had actually finished. Next it searched for a human face, adjusted its distance until it was comfortable conversational range, greeted the person, and tracked their face — restarting the hunt if they left frame for more than fifteen seconds. The final program combined everything: navigate an obstacle course by distinguishing obstacles from safe path, find a person, take an item from them, and retrace the route.
Image processing I
Image processing II
Line following
Face finding