OpenCV实战(6)——OpenCV策略设计模式
0. 前言
良好的计算机视觉程序始于良好的编程实践,构建无错误的应用程序只是一个开始。我们真正想要的是一个能够随着新需求的出现而轻松适应和发展的应用程序。本节将介绍如何充分利用一些面向对象的编程原则以构建高质量的软件程序,我们将学习一些重要的设计模式,帮助我们使用易于测试、维护和可重用的组件构建应用程序。
设计模式是软件工程中的一个常见概念,设计模式是针对软件设计中经常出现的通用问题的可靠的、可重用的解决方案。当前有许多设计模式在软件设计中被引入,我们应该对现有设计模式有所了解。
1. 策略设计模式颜色识别
1.1 颜色比较
假设我们想要构建一个简单的算法来识别图像中具有给定颜色的所有像素。为了达到目的,算法需要接受图像和颜色作为输入,并返回二值图像,其中在输入图像中与指定颜色相同的像素位置值为 1
,否则为 0
,例如,输入图像中位置 (1,1)
处的像素值与指定颜色相同,则在二值图像的 (1,1)
位置处像素值为 1
。同时,函数也可以接受颜色容差作为参数。
1.2 策略设计模式
为了实现颜色比较,本节将使用策略设计模式,这种面向对象的设计模式将算法封装在类中。这比用另一种算法替换给定算法或将几种算法链接在一起以构建更复杂的过程更容易。此外,这种模式通过隐藏尽可能多的复杂性来简化算法的部署。
一旦使用策略设计模式将算法封装在一个类中,就可以