There are a lot of ways to start working with Computer Vision. The approach you should take depends on the programming language you are more comfortable with and it also depends on what will be the final application.
MATLAB is one of the most commonly used software in Computer Science, as it allows to implement algorithms quickly. MATLAB allows to manipulate matrices, and as images are represented that way, we can work with them really easy.
There are two approaches to work with Computer Vision in MATLAB; the first one is to implement the algorithms needed for image processing and use them in your application. This works great for practice and scholar projects, however on a real-life application we should rely on optimized functions.
On the other hand, we can use the functions included on MATLAB in our application. MATLAB also provides two toolboxes, the Image Processing Toolbox and the Computer Vision Toolbox. Both can be used for rapid prototyping and on-the-fly development.
C++ / OPENCV
THE WAY TO DO COMPUTER VISION. Well, that’s what everyone will say. The original OpenCV library was developed to be used using C++. The library is distributed in two ways: you can download the source code and then you can build the library files. However, this is really hard if you are starting with Computer Vision developing and you are not familiar with compilers. The main reason OpenCV is released this way is because it allows us to create an specific build according to our needs. Fortunately, we can also found a pre-compiled version of the library, using C++10 and C++11 compilers so we can start our project ASAP.
In general, it is a little bit harder to start developing with C++, as the language itself is not that easy as Matlab. However, working with C++ we can develop applications on embedded systems, and in Linux/Windows/Android OS.
JAVA / OPENCV
In the latest versions of OpenCV, we can find the .jar version of OpenCV. I think OpenCV have released Java files since 2.4 version. However, I have only used 3.0 in Java.
We can easily download these files and add them to our project. Even thought Java is not a preferred language in the development of Computer Vision systems, probably the popularity of Java was a reason the OpenCV developers decided to release OpenCV for Java.
I consider this is a good way to introduce yourself in Computer Vision, as Java OOP (Object-Oriented Programming) is similar to C++.
C# / EMGUCV
If you are comfortable with OOP languages and want to start working in Computer Vision, we have another option for you. However, there is a downside: there are no OpenCV releases for C#!
Fortunately, this isn’t a stopper, as you can download a wrapper for the OpenCV library called EmguCv. EmguCv is a wrapper that allows the code you develop in C# to communicate with the original files written in C++.
The concept of EmguCV is based on the Adapter Design Pattern. Later, I will make an entry about Design Pattern, which is an important topic that every developer should study! The downside of EmguCV is that we depend on this 3rd party development in order to communicate with the original OpenCV library. But if you really need to develop an application in C# for Windows, this is the only way.
I hope this first entry is useful and interesting! Any comment will be really appreciated!