Reputation: 747
I have been tasked with programming a GUI for the Adaptive Use Musical Instrument project (AUMI). The GUI is a musical creation tool for people with limited mobility. The current GUI takes data from a video camera, displays it on screen, allows the user to select a point to track (using openCV) and uses this data to cue midi notes/audio samples.
A workable implementation currently exists in MaxMSP, but it has become slow, difficult to manage, buggy and cross-incompatible over time (and size). I will be re-implementing it in a different framework, though I have not yet decided on which. Processing, OpenFrameworks, Juce and Qt have all been brought up as possibilities.
Requirements:
Thoughts? Basically I'm trying to find the best balance of programming time (I don't have a ton) and final functionality. MaxMSP was great to get a prototype up and running, but we need something more scalable. It would be really nice to start in the right place.
Upvotes: 2
Views: 1440
Reputation: 11733
After intensive use of both open frameworks and Qt, I would say open frameworks. Much more easy to interface with sound software, and with OpenGL.
Even if qt has a big and nice integration with OpenGL there are changes on qt5, still some problem - as far as I have tried it - with qml, integration between OpenGL and OpenCV has to be done manually transferring a opencv image to a OpenGL texture, etc.. I can say you because I have tried to implement something similar in Qt and if I could go back I would choose openframeworks for sure.
It is doable, of course, with Qt. But openframeworks is born to do those kind of tool. Qt is something more. See bakercp answer for details on add-ons.
Upvotes: 0
Reputation: 924
openFrameworks still doesn't have an "official" comprehensive GUI solution but several good cross-platform / cross-device solutions are available via addons. Currently the most popular one is https://github.com/rezaali/ofxUI. You can explore other GUI options by checking out http://ofxaddons.com/ and filtering by GUI. As of openFrameworks 0.8.0 we are using GLFW 3 as our Desktop Windowing system (replacing GLUT) which gives us much better keyboard and input event handling. This is great news for the openFramework GUIs.
While it is not impossible to use Qt with openFrameworks (see this forum post for a discussion), some of the ofxAddon-based GUIs will enable much quicker integration with openFrameworks, which is important if you don't have a lot of extra coding time and you need easy access to OpenCV, and the world of easy-to-use addons available for openFrameworks. One final tip -- if you choose to go the openFrameworks route, I highly recommend https://github.com/kylemcdonald/ofxCv. It is an alternative to openFramework's built-in OpenCV support and is full of helpful examples. Good luck!
Upvotes: 1
Reputation: 7347
I have used Qt. It's really clean, manageable and fast. By using Qt Creator you would be able to create user interface very fast.
Linking openCV on Windows/Mac environment would not be a problem for you. Qt also let you have different linking rules for Windows and Mac, which would make it even easier for you. For threading and networking, you could use its internal classes. Then you would not need to link to different libraries on Win32 and Mac OS.
Recently they added Android support too. And they had Linux support before. So, you app would works on Win32/Mac/Linux/Android
and probably on iOS
soon. I guess that would be huge benefit.
I have also used wxWidgets with an OpenCV project couple years ago. I prefer Qt now.
Upvotes: 4