OpenCV

Last updated on 3rd October, 2010 by Shervin Emami. Posted originally on 2nd June, 2010.

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). So this website tries to make it easier with tutorials and source-code. All source code on this site are free to use for educational or commercial purposes, but may not be used for military-funded projects.

If you have never used OpenCV before, you should first read my Introduction To OpenCV.
Warning: 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!

SHIRT COLOR DETECTION
(for People Detection)

VIDEO STABILIZATION
(Coming Soon)

FACE RECOGNITION
(with realtime learning)

HSV COLOR CONVERSION

VISUAL SALIENCY TRACKING
(for People Detection)

GRAPHING FUNCTIONS

IMAGE TRANSFORMS

COMBINE VIDEOS

SKIN AND BLOB DETECTION

 

Books on Computer Vision and OpenCV:

Last updated on 20th Feb, 2016 by Shervin Emami. Posted originally on 3rd October, 2010.

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" [2013] 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.

I have a deal with Packt Publishing where you can get a 50% discount if you buy any of these 5 eBooks through these links (valid until 19th April 2016):
  • OpenCV 3 Blueprints (2015) Beginner-level projects with OpenCV 3.
  • OpenCV Essentials (2014) Beginner-level projects with OpenCV 2.
  • Mastering OpenCV with Practical Computer Vision Projects (2013) Medium-level projects with OpenCV 2 in C++.
  • OpenCV with Python Blueprints (2015) Medium-level projects with OpenCV 3 in Python.
  • Learning Robotics Using Python (2015) Various topics in advanced mobile robotics & ROS.


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:

Last updated on 8th December, 2010 by Shervin Emami. Posted originally on 8th December, 2010.

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.