One of my projects required me to work with OpenCV libraries in Windows platform. OpenCV as you all know is in C language. I wanted to give a nice interface to my project. Since the codes were in C, i initially thought of implementing it using Visual C++.
3 reasons that made me drop VC++
- The setup to make OpenCV work with VC++ was not that simple.
- The quality of interface developed is not very good.
- C# and some of the other .NET compatible languages are more stable than C. I came to this conclusion because for me the code in C used to crash more than in C#.
I found C# language provided better and simpler interface development tools. Thats when i started looking for .NET wrapper for OpenCV. There are lots of open-source .NET wrappers available. Here's a clear comparison between them. Out of them i found EmguCV is the better one and decided to use it.
Emgu CV is a cross platform .Net wrapper. Allowing OpenCV functions to be called from .NET compatible languages such as C#, VB etc. The wrapper can be compiled in Mono and run on Linux / Mac OS X.
In simple words EmguCV provides C# version of the functions provided by OpenCV. So OpenCV is still needed to be installed in your system because EmguCV is going to make use of them for its working. Now you can use Visual Studio as IDE and develop interface for your opencv application!
Shifting from C code in OpenCV to C# code in EmguCV can be difficult sometimes. The main reason being there is no pointer concept in C# and OpenCV all the image handling mainly done using pointers. It will take sometime to get adjusted to the C# syntax. But intellisense feature of visual studio can really come in handy. It is better if you could directly start off with EmguCV for rather than OpenCV.
Emgu CV has two layers of wrapper as shown below
- The basic layer (layer 1) contains function, structure and enumeration mappings which directly reflect those in OpenCV.
- The second layer (layer 2) contains classes that mix in advantanges from the .NET world.
|Architecture overview from Emgu site|
One problem i found working with EmguCV is the lack of clear tutorials and support. There is a forum where there are good number members keeping it active, but that's the only place where you can get answers for your problem. There are no books or any other material to refer. This is mainly because EmguCV is the connection between OpenCV ( which is purely open source) and .NET compatible languages ( Not open source ).