This book covers much of the functionality in OpenCV, including many contributed modules, either directly by means of a dedicated chapter, or indirectly through the code and text of a chapter. It also provides an opportunity to use OpenCV on the web, on an iOS and Android device, as well as in a Python Jupyter Notebook. Each chapter approaches a different problem and provides a complete, buildable, and runnable code example of how to achieve it, alongside a walkthrough of the solution and its theoretical context.
The book is structured to offer readers the following:
- Working OpenCV code samples for contemporary, non-trivial computer vision problems
- Best practices in engineering and maintaining OpenCV projects
- Pragmatic, algorithmic design approaches for complex computer vision tasks
- Familiarity with OpenCV's most up-to-date API (v4.0.0) hands-on by example
The following chapters are covered in this book:
Chapter 1, Cartoonifier and Skin Color Analysis on the RaspberryPi, demonstrates how to write some image processing filters for desktops and for small embedded systems such as Raspberry Pi.
Chapter 2, Explore Structure from Motion with the SfM Module, demonstrates how to use the SfM module to reconstruct a scene to a sparse point cloud, including camera poses, and also obtain a dense point cloud using multi-view stereo.
Chapter 3, Face Landmark and Pose with the Face Module, explains the process of face landmark (also known as facemark) detection using the face module.
Chapter 4, Number Plate Recognition with Deep Convolutional Networks, introduces image segmentation and feature extraction, pattern recognition basics, and two important pattern recognition algorithms, the Support Vector Machine (SVM) and deep neural network (DNN).
Chapter 5, Face Detection and Recognition with the DNN Module, demonstrates different techniques for detecting faces on the images, ranging from more classic algorithms using cascade classifiers with Haar features through to newer techniques employing deep learning.
Chapter 6, Introduction to Web Computer Vision with OpenCV.js, demonstrates a new way to develop computer vision algorithms for the web using OpenCV.js, a compiled version of OpenCV for JavaScript.
Chapter 7, Android Camera Calibration and AR Using the ArUco Module, shows how to implement an augmented reality (AR) application in the Android ecosystem, using OpenCV's ArUco module, Android's Camera2 APIs, and the JMonkeyEngine 3D game engine.
Chapter 8, iOS Panoramas with the Stitching Module, shows how to build a panoramic image stitching application on the iPhone using OpenCV's precompiled library for iOS.
Chapter 9, Finding the Best OpenCV Algorithm for the Job, discusses a number of methods to follow when considering options within OpenCV.
Chapter 10, Avoiding Common Pitfalls in OpenCV, reviews the historic development of OpenCV, and the gradual increase in the framework and algorithmic offering, alongside the development of computer vision at large.