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

Posted

技术标签:

【中文标题】创建跨平台计算机视觉 GUI 的理想框架【英文标题】:Ideal framework for creating a cross-platform computer vision GUI 【发布时间】:2013-09-10 19:13:00 【问题描述】:

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

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

要求:

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

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

【问题讨论】:

你到底做了什么? 开放框架!处理结果太重了,我并没有真正尝试其他的(没有冒犯 Roozbeh!)。 CV 和交叉兼容性非常简单,虽然 UI 有点麻烦。仍在努力(他们不再付钱给我,所以这是一种爱的劳动)。如果/当我完成时会在这里链接。 【参考方案1】:

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

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

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

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

【讨论】:

在 Linux 版本中,我可以确认它在 Raspberry PI 上也能正常工作(ARM cpu)【参考方案2】:

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

虽然将 Qt 与 openFrameworks 结合使用并非不可能(参见this forum post 进行讨论),但一些基于 ofxAddon 的 GUI 将能够更快地与 openFrameworks 集成,如果您没有很多额外的编码时间,您需要轻松访问 OpenCV,以及可用于 openFrameworks 的易于使用的插件世界。最后一个提示——如果你选择使用 openFrameworks 路线,我强烈推荐https://github.com/kylemcdonald/ofxCv。它是 openFramework 内置的 OpenCV 支持的替代方案,并且充满了有用的示例。祝你好运!

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于创建跨平台计算机视觉 GUI 的理想框架的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV框架介绍

视觉算法工程师的主要职责8篇

嵌入式linux开发,opencv移植,opencv-2.4.9移植,cmake-gui

缺陷检测基于matlab GUI计算机视觉缺陷检测系统含Matlab源码 1845期

TLD视觉目标跟踪框架原理与实践

疾病识别基于matlab GUI机器视觉肺癌检测系统含Matlab源码 1922期