0

我想对我的计算机视觉应用程序的 GUI 提出一些意见。我使用 OpenCV 用 C++ 编写了一个应用程序,它从高速摄像机捕获视频,对图像进行一些图像处理并将结果显示到 HighGUI 窗口。我发现自己会定期调整变量,因此决定使用 GUI 动态调整这些变量会更容易、更快捷。我有几个选择:

  • 创建一个可以使用套接字与我的 C++ 计算机视觉应用程序对话的 Java GUI
  • 在 QT GUI 中集成我的应用程序
  • 使用本机 Windows 调用(例如 MFC)

你们认为哪个是我最好的选择,请记住 GUI 或套接字不得降低应用程序图像处理部分的性能?

(我的目标操作系统是 Windows)

非常感谢大家的投入。

4

2 回答 2

2

我会考虑选项 1 或 2、3 接缝绝对是最糟糕的,因为你必须自己编写所有与 gui 代码相关的代码,而且它是不可移植的。
1.代替这个选项,我会考虑在Java中创建GUI并将整个c++代码放入库中并在Java中使用它,甚至在Java中使用本机c++代码。此解决方案应该比通过套接字发送数据更快。
2. QT 是最好的选择——它有很大的社区,有很多教程,并且部分与 OpenCV 集成(http://opencv.willowgarage.com/documentation/cpp/highgui_qt_new_functions.html)。另一个优点是使用 QT 和 OpenCV 创建的应用程序可以在许多操作系统上运行。您也可以使用 Qt Creator 或 Visual Studio qt 插件来创建 gui。

于 2013-09-06T10:17:49.693 回答
2

您真的不想在 Windows 上处理平台本机代码。API 是过时的,就像 MFC 一样。

我认为在单独的过程中隔离 GUI 没有任何好处。

我建议使用 Qt Quick。您可以通过将 OpenCV 中的图像绑定到简单场景图项上的纹理来非常有效地显示图像。您可以同时获得流畅、现代的用户界面和与 OpenCV 的高性能集成。这一切都融为一体,可以这么说。

将变量与 QML 集成的最简单方法是使用模型视图范式。您可以通过重新实现一个QAbstractListModel. 变量的值可以绑定到编辑和显示角色。变量的名称可以作为附加角色公开,例如name. 然后在 Qt Quick 中使用 ListView 来显示变量列表并允许在运行时对其进行调整是一件简单的事情。您可以轻松地为您的项目设置“花式”代表,例如滑块。

于 2013-09-06T10:22:53.147 回答