OpenCV is a great library for creating Computer Vision software using state-of-the-art techniques, and is freely available for Windows, Linux, Mac and even Android & iPhone. OpenCV was originally designed by Intel in 1999 to show how fast Intel CPUs can run. So most of OpenCV runs very fast on Intel CPUs, now including some SSE2 optimizations.
However, OpenCV is mainly used for tasks that are complex in nature, often requiring post-grad experience in the fields of Computer Vision or Artificial Intelligence (AI).
OpenCV is for creating futuristic applications that perhaps no-one else has done before, so it’s important that you are good at computer programming BEFORE you start using OpenCV!
Things you can do with OpenCV
- Shirt Color Detection
- Video Stabilization
- Face Recognition
- HSV Color Conversion
- Visual Salience Tracking (for People Detection)
- Graphing Functions
- Image Transforms
- Combine Videos
- Skin and Blob Detection
Books on Computer Vision and OpenCV
The official reference book for OpenCV is “Learning OpenCV: Computer Vision with the OpenCV Library” (Second Edition) from O’Reilly Publishing (2013) [source code]. It is a very useful book for learning OpenCV, and the new second edition covers the new C++ API of OpenCV v2.
If you are a complete beginner to OpenCV and computer vision, you might consider the book Instant OpenCV Starter for a quick intro. There are also many other books on OpenCV, listed at opencv.org/books.html. Most of the existing books are for OpenCV beginners.
If you are already experienced with OpenCV but looking for more projects & ideas, consider the “Mastering OpenCV with Practical Computer Vision Projects” (2013) [source code] book that I worked on, it explains whole projects so it is for intermediate and advanced OpenCV users. Also, the book “Instant OpenCV for iOS”  covers simple topics like Apple iOS / iPhone / iPad development but also some advanced topics such as Apple’s Accelerate framework and ARM NEON SIMD optimization, and both authors are official OpenCV developers.
There are also many other good books for computer vision that are not specific to OpenCV, such as:
- “Computer Vision: A Modern Approach” by Forsyth and Ponce (2002).
- “Computer Vision: Algorithms and Applications” by Szeliski (2011).
- “Digital Image Processing” by Gonzalez and Woods (2001).
- “The Essential Guide to Image Processing”, by Bovik (2009).
- “Computer Vision and Applications: A Guide for Students and Practitioners”, by Jähne and Haußecker (2000).
- Many free Computer Vision books online
- HIPR2 Image Processing Worksheets (simple explanations of many computer vision topics)
OpenCV Tutorials on the Web
Some good places to learn how to use OpenCV are online tutorials such as:
- Noah Kuntz’s 11 OpenCV tutorials (good for beginners!).
- Avi Kak’s Purdue University computer vision assignments with solutions.
- Nashruddin’s OpenCV tutorials such as eye tracking and beginner tutorials.
- Utkarsh’s OpenCV tutorials such as corner detection, histograms and SIFT.
- Damile’s OpenCV tutorials such as OCR and K-Nearest Neighbors pattern recognition.
- Interesting OpenCV tutorials such as OpenCV on iPhone & Android, Augmented Reality and 3D Pose Estimation.
- Barbato’s libraries for combining OpenCV with OpenGL for 2D and 3D graphics.
- OpenCV tutorials (but mainly just demonstrations) such as object detection, face recognition and cross-compiling.
- Color-based Blob Detection
- Speed testing a website
- Fiddling with Fiddler
- Tbot: The Self-Balancing Transformer Robot
- To RAID or not to RAID
- Draw graphs using OpenCV
- Introduction to Face Detection and Face Recognition
- Script to check available diskspace in C#/.net
- Motivation for hand-optimized Assembly code
- Setting up IIS 7.5 and Apache on same server