OpenCV is a C++ library for computer vision. It can do image segmentation, feature recognition (e.g., face detection), video processing, and much more. I use it to correct for drift in atomic force microscopy data; here we'll use it to play Where's Waldo (or Wally for the Brits).

OpenCV comes with a Python wrapper, cv2 , which stores the images as NumPy arrays. This makes it easy to switch between treating images as images, and as arrays.