When I first started learning OpenCV, I was working exclusively with Python. While I am still a huge fan of the language, today all of my OpenCV programs are written in C++. Why?
- Some of the deeper functionality of OpenCV has not been completely ported to Python (although hopefully the release of OpenCV 3.0 will fix most of these issues).
- Most in-depth textbooks on image processing and computer vision that cover OpenCV use C++ as their primary language. It was therefore easier to learn from these resources by adopting the language.
- A lot of the computer vision techniques I use (SIFT, machine learning, etc), are better documented in C++.
- Passing images back and forth between NumPy arrays has overhead that C++ doesn’t have to worry about.
- As has been suggested to me by Carl Bell, Python struggles to perform well with overloaded functions.