0

我将编写一个加载视频的计算机视觉应用程序,逐帧进行一些图像处理,然后将其结果与原始视频并排显示。我还想实现播放、暂停和停止按钮以及其他 gui 的东西。

我读过的所有关于计算机视觉的教程和文章都是程序化的,但我想以 OOP 的方式来做。

这个问题的最佳设计模式是什么?

有关其他信息,我想我将为这个项目使用 OpenCV (C++) 和 Qt。

4

1 回答 1

0

我将从一个类似但不同的例子开始,它是一个真实的例子。

在实践中,比如说,当您拥有一个本地 C++ 库时,您可以创建一个 Java 类,通过本地方法访问该库(每个方法都是 C/C++ 函数调用的 Java 包装器),然后使用 Java 中的该类。(通常那个包装类从概念上看有点难看,就是它包含了奇怪的辅助方法、原生资源句柄等)

OO设计是关于分配职责;在上述情况下,您将与该本地库交互的责任分配给一个类。然后,您让其他类根据应用程序逻辑使用该类。也许,您为该库包装类创建了一个包装器(一个提供更合理接口的适配器)。

现在谈谈你的情况。

您很可能有一些算法,它们要么已经编码,要么可以直接编码。我会让算法尽可能地贴近书本。(它不是 Java 的本机库,而是一本书中的算法库。)然后,您创建使用这个算法书包装类的任何类。

至于 UI,您创建一个普通的应用程序 UI。创建与数据的内部结构(或该数据可能发生的事件)匹配的 UI 是错误的;您只能使用“数据就绪”事件。

原因是你的 UI 的变化不能影响你的数据和算法,你的算法和数据结构的变化不能影响 UI。

于 2013-03-18T09:33:09.573 回答