OpenCV设计模式分析

OpenCV实现模式(MVC)

OpenCV开发中常用的设计模式:策略模式、单例模式、MVC架构(模型——视图——控制器)等。

使用面向对象的思想实现程序,则需要应用设计模式进行设计和重构,已达到让程序更加理想。

MVC架构

MVC架构:将用户界面和内部逻辑清晰地分离的手段。主要包括一下三部分:

1)模型(Model):保存着与应用相关的数据信息。模型保存着所有需要交给应用程序处理的数据。当产生新的数据时,模型就通知它的视图,而视图将与模型通信以展示这些新数据。

2)视图(View):与用户的界面对应。视图由多个不同的窗口元素组成,用于将数据展现给用户,并与用户交互。视图的一个作用是将用户的指令发送给控制器。当有可用的新数据时,视图将得到刷新,并展现新内容给用户。

3)控制器(Controller):连接模型和视图的桥梁。控制器接收从视图发送过来的请求,并将之交付给相应的视图进行处理。当a模型的状态发生变化时,控制器也会得到通知,并与视图通信以展示新信息。

OpenCV中模型编写

对于图像处理程序,模型是若干个算法模型的组合,所有这些算法模块都是模型的一部分。这些模块往往采取策略(strategy)模式来实现。

策略模式:目标是将一个算法封装成类。应用这种模式后,我们可以很方便的将一个算法替换成另一个算法,或将几个算法串接起来以形成一个更加复杂的流程。另外,通过只暴露程序接口而隐藏算法实现细节,应用该模式可以很有效的降低算法的使用难度。

通过使用类封装,达到原来对算法函数的调用被抽象为更加清晰可读的类,调用该算法只需要实例化该类,并调用类中的函数,而具体的参数可以通过一系列的get、set函数设置。这种接口风格可以被其它算法函数沿用,从而减少应用开发者的记忆负担,利于提供可用性。

OpenCV中控制器编写

控制器起到一个连接模型和视图的作用。当用户发送处理指令时,可通过控制器控制模型执行处理。控制器可以使用单例模式,让类自身负责保存它的唯一实例,用于确保该控制类在任何时候都只能有一个实例,并提供一个用于访问该实例的全局指针。

建议控制器使用单例模式设计原因:像文本这么简单的例子,用不用单例模式都无所谓。然后对于复杂系统,可能有多个视图需要访问和使用同一个控制器,比如存在多个对话框以修改同个算法模块的参数,这时候,单例模式显得非常有用——它可以保证这种唯一性和同一性。

OpenCV中视图编写

视图实现比较简单,主要包含一些窗口元素等。

参考:http://hahack.com/codes/opencv-and-mvc/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值