我打算编写一个计算机视觉应用程序来加载视频,逐帧进行一些图像处理,然后将其结果与原始视频并排显示。我还想实现播放,暂停和停止按钮以及其他gui东西。
我所经历过的关于计算机视觉的所有教程和文章都是以程序方式进行的,但我想以OOP方式进行。
这个问题的最佳设计模式是什么?
有关其他信息,我想我将在此项目中使用OpenCV(C ++)和Qt。
答案 0 :(得分:0)
我将从一个类似但不同的例子开始,它是一个真实的例子。
实际上,当你有一个原生C ++库时,你创建了一个通过本机方法访问该库的Java类(每个方法都是C / C ++函数调用的Java包装器),然后使用该类Java的。 (通常,从概念的角度来看,包装类有点难看,也就是说,它包含奇怪的辅助方法,本机资源句柄等。)
OO设计是关于分配责任;在上面的例子中,您将与本机库交互的责任分配给一个类。然后,让其他类根据应用程序逻辑使用该类。也许,您为该库包装类创建了一个包装器(一个为这个包提供更合理的接口的适配器)。现在谈谈你的情况。
您很可能有一些算法,这些算法已经编码或者可以直接编码。 我会尽可能地将算法保留在本书附近。(它不是Java的本地库,而是书籍中的算法库。)然后,您创建使用本书的任何类 - of-algorithms wrapper class。
对于UI,您可以创建普通的应用程序UI。创建与数据的内部结构(或可能与该数据发生的事件)匹配的UI是错误的;您只能使用“数据就绪”事件。
原因是您的UI中的更改不得影响您的数据和算法,并且算法和数据结构中的更改不得影响UI。