Why does OpenCV use BGR color format ?
One of the elements of good design is the principle of least astonishment ( a.k.a principle of least surprise). A good intuitive design makes the user not think. When you see a handle on a door, you...
View ArticleFacial Landmark Detection
Who sees the human face correctly: the photographer, the mirror, or the painter? — Pablo Picasso If Picasso was alive today, he would have definitely added one more professional to that list — a...
View ArticleOpenCV (C++ vs Python) vs MATLAB for Computer Vision
We often confuse our tools for our craft. Tools help you practice your craft, but they do not make you a good craftsman. A good craftsman has many different tools in her pocket, and she judiciously...
View ArticleDelaunay Triangulation and Voronoi Diagram using OpenCV ( C++ / Python )
In a previous post I had discussed two libraries for facial landmark detection, and had pointed to several interesting applications like Face Morphing, Face Replacement etc. that use facial landmarks....
View ArticleHow to find frame rate or frames per second (fps) in OpenCV ( Python / C++ ) ?
In OpenCV the class VideoCapture handles reading videos and grabbing frames from connected cameras. There is a lot of information you can find about the video file you are playing by using the...
View ArticleFilling holes in an image using OpenCV ( Python / C++ )
In this tutorial we will learn how to fill holes in a binary image. Consider the image on the left in Figure 1. Let’s say we want to find a binary mask that separates the coin from the background as...
View ArticleHomography Examples using OpenCV ( Python / C ++ )
The Tower of Babel, according to a mythical tale in the Bible, was humans’ first engineering disaster. The project had all the great qualities of having a clear mission, lots of man power, no time...
View ArticleNVIDIA DIGITS 3 on EC2
So you have heard a lot about Deep Learning and Convolutional Neural Network, and you want to quickly try it out. But before you dive into the theory you want to get your hands dirty. And you don’t...
View ArticleDeep Learning Example using NVIDIA DIGITS 3 on EC2
In my previous post I provided step by step instructions on how to install NVIDIA DIGITS 3 on Amazon EC2. In this post, we are going to use an Amazon Machine Image (AMI) that I have configured for...
View ArticleFace Morph Using OpenCV — C++ / Python
In this tutorial we will learn how to morph one face into another using OpenCV. I have chosen to use the photos of the top three American Presidential candidates, but this is not a political post and...
View ArticleFace Swap using OpenCV ( C++ / Python )
In this tutorial we will learn how to swap out a face in one image with a completely different face using OpenCV and DLib in C++ and Python. To understand the description below better, download the C++...
View ArticleAverage Face : OpenCV ( C++ / Python ) Tutorial
In this tutorial we will learn how to create an average face using OpenCV ( C++ / Python ). Most people would agree that the woman in Figure 1 is pretty. Can you guess her ethnicity ? Why is her skin...
View ArticleWarp one triangle to another using OpenCV ( C++ / Python )
In this tutorial we will see how to warp a single triangle in an image to another triangle in a different image. In computer graphics people deal with warping triangles all the time because any 3D...
View ArticleSpeeding up Dlib’s Facial Landmark Detector
In this tutorial I will explore a few ways to speed up Dlib’s Facial Landmark Detector. Dlib’s Facial Landmark Detector Dlib has a very good implementation of a very fast facial landmark detector. I...
View ArticleRotation Matrix To Euler Angles
In this post I will share code for converting a 3×3 rotation matrix to Euler angles and vice-versa. 3D rotations matrices can make your head spin. I know it is a bad pun but truth can sometimes be very...
View ArticleConfiguring Qt for OpenCV on OSX
In this tutorial we will learn how to configure Qt to use OpenCV. Although the tutorial is targeted for OSX users, you can modify my suggestions for use in Linux and Windows. I assume you have a...
View ArticleApproximate Focal Length for Webcams and Cell Phone Cameras
In this post I will explain how to find a crude approximation to the focal length of a webcam or cell phone camera ( i.e. fixed focal length cameras ) if calibration is not an option or if you are too...
View ArticleHead Pose Estimation using OpenCV and Dlib
In this tutorial we will learn how to estimate the pose of a human head in a photo using OpenCV and Dlib. In many applications, we need to know how the head is tilted with respect to a camera. In a...
View ArticleImage Recognition and Object Detection : Part 1
This is a multipart post on image recognition and object detection. In this part, we will briefly explain image recognition using traditional computer vision techniques. I refer to techniques that are...
View ArticleHistogram of Oriented Gradients
In this post, we will learn the details of the Histogram of Oriented Gradients (HOG) feature descriptor. We will learn what is under the hood and how this descriptor is calculated internally by OpenCV,...
View Article