I am going to start a project on controlling robots using hand gestures. Though I have used MATLAB for this purpose earlier, I realized it is extremely slow for any practical real-time system. I am currently planning to use OpenCV for this purpose. I want suggestions on, if OpenCV is the best alternative, are there any other alternatives and if I use OpenCV, which language should I go for, C, C++ or Python?
-
1$\begingroup$ Do you mean "real-time system" in the sense that you're using an RTOS, or is it just that MATLAB isn't processing enough frames-per-second for your application? $\endgroup$– IanCommented Sep 23, 2013 at 2:40
-
$\begingroup$ No as of now the project is not using an RTOS $\endgroup$– uncreativeCommented Oct 13, 2013 at 15:17
-
1$\begingroup$ Reading your question again, it sounds like you're hesitating to even try MATLAB before ruling it out as "too slow". What gesture-recognition technique do you plan to use in MATLAB that you know in advance to be too slow to be practical? $\endgroup$– IanCommented Oct 14, 2013 at 2:02
2 Answers
Though I did not use hand gestures, I used color based object tracking for my undergrad project. I did it through MATLAB as at that point of time I had no idea about Open-CV. I am guessing you will have a laptop for image processing and send commands run-time to your robot. Ok first thing, sending serial commands though the serial port / USB port / wifi to your robot will be damn easy (at-least in the computer part - sending). You can do your gesture recognition using low resolution say 240*240. This will be fast considering a moderately new machine. MATLAB is itself not slow. It is your implementation and algorithms used which determines slow or fast.
Now if you want to do the entire thing in a mobile platform say Android, MATLAB is out of the question. Or if you are using any embedded platform then Open-CV is the way to go. You will have to code the communication part of things too as OpenCV does not have any serial communication or related toolbox. But even with Open-CV your implementation and algorithms will determine slow or fast.
In open-CV 2.0 the new C++ interface is much better and also faster than the old openCV 1.0 functions. You also have OO with OpenCV 2.0 and using CVMat is much more related and easy like MATLAB than the native IPLImage interface.
If starting out with programming use C/C++ as most of the examples using OpenCV on the internet use that language but there are interfaces for many other languages. I.E. Java, Python, C++, C
More details: http://opencv.org/