(For more resources related to this topic, see here.)
Architecture overview
In this section we will examine and compare the architectures of OpenCV and Emgu CV.
OpenCV
In the hello-world project, we already knew our code had something to do with the bin folder in the Emgu library that we installed. Those files are OpenCV DLLs, which have the filename starting with opencv_. So the Emgu CV users need to have some basic knowledge about OpenCV.
OpenCV is broadly structured into five main components. Four of them are described in the following section:
The components can be seen in the following diagram:

Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at $19.99/month. Cancel anytime
The preceding structure map does not include CvAux, which contains many areas. It can be divided into two parts: defunct areas and experimental algorithms. CvAux is not particularly well documented in the Wiki, but it covers many features. Some of them may migrate to CV in the future, others probably never will.
Emgu CV
Emgu CV can be seen as two layers on top of OpenCV, which are explained as follows:
- Layer 1 is the basic layer. It includes enumeration, structure, and function mappings. The namespaces are direct wrappers from OpenCV components.
- Layer 2 is an upper layer. It takes good advantage of .NET framework and mixes the classes together. It can be seen in the bridge from OpenCV to .NET.
The architecture of Emgu CV can be seen in the following diagram, which includes more details:

After we create our new Emgu CV project, the first thing we will do is add references. Now we can see what those DLLs are used for:
- Emgu.Util.dll: A collection of .NET utilities
- Emgu.CV.dll: Basic image-processing algorithms from OpenCV
- Emgu.CV.UI.dll: Useful tools for Emgu controls
- Emgu.CV.GPU.dll: GPU processing (Nvidia Cuda)
- Emgu.CV.ML.dll: Machine learning algorithms