Defining faces and a face detector
Let's define faces and a face detector in pure C++ code without using any dependencies except OpenCV. This ensures that the computer vision functionality of ManyMasks is portable. We could reuse the core of our code on a different platform with a different set of UI libraries.
A face has a species. For our purposes, this could be Human
, Cat
, or Hybrid
. Let's create a header file, Species.h
, and define the following enum
in it:
#ifndef SPECIES_H #define SPECIES_H enum Species { Human, Cat, Hybrid }; #endif // !SPECIES_H
A face also has a matrix of image data and three feature points representing the centers of the eyes and tip of the nose. We may construct a face in any of the following ways:
Specify a species, matrix, and feature points.
Create an empty face with default values, including an empty matrix.
Copy an existing face.
Merge two existing faces.
Let's create another header file, Face.h
, and declare the following public interface of a Face
class...