One of cooler libraries we've highlighted over the years is OpenCV, Open Source Computer Vision.
OpenCV (Open Source Computer Vision Library) is an open source computer vision and machine learning software library. OpenCV was built to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception in the commercial products. Being a BSD-licensed product, OpenCV makes it easy for businesses to utilize and modify the code.
The library has more than 2500 optimized algorithms, which includes a comprehensive set of both classic and state-of-the-art computer vision and machine learning algorithms. These algorithms can be used to detect and recognize faces, identify objects, classify human actions in videos, track camera movements, track moving objects, extract 3D models of objects, produce 3D point clouds from stereo cameras, stitch images together to produce a high resolution image of an entire scene, find similar images from an image database, remove red eyes from images taken using flash, follow eye movements, recognize scenery and establish markers to overlay it with augmented reality, etc. OpenCV has more than 47 thousand people of user community and estimated number of downloads exceeding 7 million. The library is used extensively in companies, research groups and by governmental bodies.
Along with well-established companies like Google, Yahoo, Microsoft, Intel, IBM, Sony, Honda, Toyota that employ the library, there are many startups such as Applied Minds, VideoSurf, and Zeitera, that make extensive use of OpenCV. OpenCV’s deployed uses span the range from stitching streetview images together, detecting intrusions in surveillance video in Israel, monitoring mine equipment in China, helping robots navigate and pick up objects at Willow Garage, detection of swimming pool drowning accidents in Europe, running interactive art in Spain and New York, checking runways for debris in Turkey, inspecting labels on products in factories around the world on to rapid face detection in Japan.
It has C++, C, Python, Java and MATLAB interfaces and supports Windows, Linux, Android and Mac OS. OpenCV leans mostly towards real-time vision applications and takes advantage of MMX and SSE instructions when available. A full-featured CUDA and OpenCL interfaces are being actively developed right now. There are over 500 algorithms and about 10 times as many functions that compose or support those algorithms. OpenCV is written natively in C++ and has a templated interface that works seamlessly with STL containers.
Last week was a huge week for the OpenCV team with the release of the next major version.
With a great pleasure and great relief OpenCV team finally announces OpenCV 3.0 gold release, the most functional and the fastest OpenCV ever. And yet it’s very stable too – all the thousands of tests that we created during the project + many new tests pass successfully on Windows, Linux and Mac, x64 and ARM.
The changes since 3.0-rc, as well previous changes, can be found at http://code.opencv.org/projects/opencv/wiki/ChangeLog. This is a short executive summary on what’s new in 3.0 vs 2.4:
- ~1500 patches, submitted as PR @ github. All our patches go the same route.
- opencv_contrib (http://github.com/itseez/opencv_contrib) repository has been added. A lot of new functionality is there already! opencv_contrib is only compatible with 3.0/master, not 2.4. Clone the repository and use “cmake … -D OPENCV_EXTRA_MODULES_PATH=<path_to opencv_contrib/modules> …” to build opencv and opencv_contrib together.
- a subset of Intel IPP (IPPCV) is given to us and our users free of charge, free of licensing fees, for commercial and non-commerical use. It’s used by default in x86 and x64 builds on Windows, Linux and Mac.
- T-API (transparent API) has been introduced, this is transparent GPU acceleration layer using OpenCL. It does not add any compile-time or runtime dependency of OpenCL. When OpenCL is available, it’s detected and used, but it can be disabled at compile time or at runtime. It covers ~100 OpenCV functions. This work has been done by contract and with generous support from AMD and Intel companies.
- ~40 OpenCV functions have been accelerated using NEON intrinsics and because these are mostly basic functions, some higher-level functions got accelerated as well.
- There is also new OpenCV HAL layer that will simplifies creation of NEON-optimized code and that should form a base for the open-source and proprietary OpenCV accelerators.
- The documentation is now in Doxygen: http://docs.opencv.org/master/
- We cleaned up API of many high-level algorithms from features2d, calib3d, objdetect etc. They now follow the uniform “abstract interface – hidden implementation” pattern and make extensive use of smart pointers (Ptr<>).
- Greatly improved and extended Python & Java bindings (also, see below on the Python bindings), newly introduced Matlab bindings (still in alpha stage).
- Improved Android support – now OpenCV Manager is in Java and supports both 2.4 and 3.0.
- Greatly improved WinRT support, including video capturing and multi-threading capabilities. Thanks for Microsoft team for this!
- Big thanks to Google who funded several successive GSoC programs and let OpenCV in. The results of many successful GSoC 2013 and 2014 projects have been integrated in opencv 3.0 and opencv_contrib (earlier results are also available in OpenCV 2.4.x). We can name:
- text detection
- many computational photography algorithms (HDR, inpainting, edge-aware filters, superpixels, …)
- tracking and optical flow algorithms
- new features, including line descriptors, KAZE/AKAZE
- general use optimization (hill climbing, linear programming)
- greatly improved Python support, including Python 3.0 support, many new tutorials & samples on how to use OpenCV with Python.
- 2d shape matching module and 3d surface matching module
- RGB-D module
- VTK-based 3D visualization module
- Besides Google, we enjoyed (and hope that you will enjoy too) many useful contributions from community, like:
- biologically inspired vision module
- DAISY features, LATCH descriptor, improved BRIEF
- image registration module
If you're interested in developing with OpenCV, Intel has a product you should check out.
If you want to get started with exploring Computer Vision algorithms, the best place to start used to be http://opencv.org/ - home of the OpenCV (Open Source Computer Vision Library) , an open source computer vision and machine learning software library. As is typical with all Open Source tools, previously you had to configure and build it yourself, learning cross-platform build tools like CMake in the process. What you got out of the box was not necessarily tuned for your platform, so you had to roll up your sleeves and delve into the gory details of the algorithm you cared about to make sure it worked properly on your system, which meant learning OpenCL and how to optimize it for your platform. Not that there's anything wrong with that.
Now, aspiring Computer Vision programmer can start withIntel® INDE suite, which in its latest Update 2 includes a prebuilt version of OpenCV optimized for Windows and Android on Intel(R) Processors with Intel(R) Processor Graphics.
I had a prior experience with OpenCV, specifically version 2.4.8, and remember that I spent quite some time configuring and building it before the fun began. I wanted to see whether OpenCV experience is improved with Intel(R) INDE. I was pleasantly surprised.
You start by downloading and installing Intel® INDE OpenCV (you would need to obtain a Beta serial number in addition to the one you probably have already, which is a bit of a hassle). It comes with two very handy features: an OpenCV Wizard that helps you to create an OpenCV application quickly and Image Watch add-on from Microsoft to help you visualize intermediate results of your computer vision processing timeline.
Let's start with the wizard. Start your Microsoft Visual Studio as usual. Select OpenCV entry and then OpenCV Project for Windows and hit OK.
The great news is the Intel is offering a short term promotion deal. Between now and August 31, 2015 you can get the Professional Edition for free.
I signed up myself today and it seems to be the real deal too, where my serial number arrived in my email in just seconds and the installer accepted it with no problems.
The install will also help ensure you have all the components (like the x86 JDK). Also of note is the OpenCV is in beta, so you'll need to signed up (free) and get another serial number, which also arrived in seconds. The install provides links to all these...
By now, you should have enough to keep you busy for the next few days. :)