#### Overview of this book

Computer vision is found everywhere in modern technology. OpenCV for Python enables us to run computer vision algorithms in real time. With the advent of powerful machines, we have more processing power to work with. Using this technology, we can seamlessly integrate our computer vision applications into the cloud. Focusing on OpenCV 3.x and Python 3.6, this book will walk you through all the building blocks needed to build amazing computer vision applications with ease. We start off by manipulating images using simple filtering and geometric transformations. We then discuss affine and projective transformations and see how we can use them to apply cool advanced manipulations to your photos like resizing them while keeping the content intact or smoothly removing undesired elements. We will then cover techniques of object tracking, body part recognition, and object recognition using advanced techniques of machine learning such as artificial neural network. 3D reconstruction and augmented reality techniques are also included. The book covers popular OpenCV libraries with the help of examples. This book is a practical tutorial that covers various examples at different levels, teaching you about the different functions of OpenCV and their actual implementation. By the end of this book, you will have acquired the skills to use OpenCV and Python to develop real-world computer vision applications.
Title Page
Contributors
Packt Upsell
Preface
Free Chapter
Applying Geometric Transformations to Images
Detecting Edges and Applying Image Filters
Cartoonizing an Image
Detecting and Tracking Different Body Parts
Extracting Features from an Image
Seam Carving
Detecting Shapes and Segmenting an Image
Object Tracking
Machine Learning by an Artificial Neural Network
Other Books You May Enjoy

## How to augment our reality

Now that we know how to track planar objects, let's see how to overlay 3D objects on top of the real world. The objects are 3D but the video on our screen is 2D. So, the first step here is to understand how to map those 3D objects to 2D surfaces so that they look realistic. We just need to project those 3D points onto planar surfaces.

### Mapping coordinates from 3D to 2D

Once we estimate the pose, we project the points from 3D to 2D. Consider the following image:

As we can see here, the TV remote control is a 3D object but we are seeing it on a 2D plane. Now if we move it around, it will look like this:

This 3D object is still on a 2D plane. The object has moved to a different location and the distance from the camera has changed as well. How do we compute these coordinates? We need a mechanism to map this 3D object onto the 2D surface. This is where 3D-to-2D projection becomes really important.

We just need to estimate the initial camera pose to start with. Now, let's...