创建跨平台计算机视觉 GUI 的理想框架



我的任务是为自适应使用乐器项目(AUMI)编程GUI。GUI是针对行动不便人士的音乐创作工具。当前的GUI从摄像机获取数据,将其显示在屏幕上,允许用户选择要跟踪的点(使用openCV),并使用这些数据来提示midi音符/音频样本。

MaxMSP中目前存在一个可行的实现,但随着时间的推移(和大小),它变得缓慢,难以管理,错误和交叉不兼容。我将在不同的框架中重新实现它,尽管我尚未决定哪个。处理,OpenFrameworks,Juce和Qt都被提出作为可能性。

要求:

  • 最终的GUI必须在Windows和Mac上运行。
  • 计算机视觉应该尽可能流畅地运行,即使在低端机器上也是如此(我们现在只是在做点跟踪,尽管希望将来会更花哨)。
  • GUI基本上不需要用户的技术专业知识,这主要在学校使用。我意识到这在很大程度上取决于设计,但我也不希望用户需要导航一百万个文件。

思潮?基本上,我试图在编程时间(我没有很多)和最终功能之间找到最佳平衡。MaxMSP 非常适合启动并运行原型,但我们需要一些更具可扩展性的东西。从正确的地方开始真的很好。

我用过Qt。它真的很干净,易于管理且快速。通过使用Qt Creator,您将能够非常快速地创建用户界面。

在Windows/Mac环境中链接openCV对您来说不是问题。Qt还允许您为Windows和Mac提供不同的链接规则,这将使您更加轻松。对于线程和网络,可以使用其内部类。然后,您无需链接到Win32和Mac OS上的不同库。

最近他们也添加了Android支持。他们以前有Linux支持。因此,您的应用程序将适用于Win32/Mac/Linux/Android,并且可能很快就会在iOS上运行。我想这将是一个巨大的好处。

几年前,我还在OpenCV项目中使用了wxWidgets。我现在更喜欢Qt。

openFrameworks 仍然没有"官方"的综合 GUI 解决方案,但可以通过插件获得几个很好的跨平台/跨设备解决方案。 目前最受欢迎的是 https://github.com/rezaali/ofxUI。 您可以通过签出 http://ofxaddons.com/并按 GUI 进行筛选来探索其他 GUI 选项。 从openFrameworks 0.8.0开始,我们使用GLFW 3作为我们的桌面窗口系统(取代GLUT),这为我们提供了更好的键盘和输入事件处理。 这对openFramework GUI来说是个好消息。

虽然将Qt与openFrameworks一起使用并非不可能(请参阅此论坛帖子进行讨论),但一些基于ofxAddon的GUI将实现与openFrameworks的更快集成,如果您没有很多额外的编码时间并且需要轻松访问OpenCV,以及可用于openFrameworks的易于使用的插件世界,这一点很重要。 最后一个提示 - 如果你选择走openFrameworks路线,我强烈建议你 https://github.com/kylemcdonald/ofxCv。 它是openFramework内置OpenCV支持的替代方案,并且充满了有用的示例。 祝你好运!

在大量使用开放框架和Qt之后,我会说开放框架。与声音软件和OpenGL的接口更加容易。

即使qt与OpenGL有一个很大而很好的集成,qt5也有变化,仍然有一些问题 - 据我所尝试 - 使用qml,OpenGL和OpenCV之间的集成必须手动完成将opencv图像传输到OpenGL纹理等。 我可以说你,因为我试图在Qt中实现类似的东西,如果我能回去,我肯定会选择开放框架。

当然,使用Qt是可行的。但是开放框架就是为了做这类工具而生的。Qt是更多的东西。有关附加组件的详细信息,请参阅 bakercp 答案。

最新更新