OpenCV 4计算机视觉:Python语言实现(原书第3版)
上QQ阅读APP看书,第一时间看更新

2.4 Cameo:面向对象的设计

可以用纯过程式风格编写Python应用程序。通常,这是通过小型应用程序(例如前面讨论过的基本I/O脚本)实现的。但是,从现在开始,我们将经常使用面向对象的风格,因为面向对象促进了模块化和可扩展性。

从对OpenCV的I/O功能的概述中,我们知道不管源图像或者目标图像是什么,所有图像都是相似的。不管获取的图像流是什么,或者将其作为输出发送到哪里,我们都可以对这个流的每一帧应用相同的特定于应用程序的逻辑。在使用多个I/O流的应用程序(例如Cameo)中,I/O代码和应用程序代码的分离变得特别方便。

我们将创建的类命名为CaptureManager和WindowManager,作为I/O流的高级接口。应用程序代码可以使用CaptureManager读取新帧,也可以将每一帧分派给一个或多个输出,包括静态图像文件、视频文件和窗口(通过WindowManager类)。WindowManager类允许应用程序代码以面向对象风格处理窗口和事件。

CaptureManager和WindowManager都是可扩展的。我们可以实现不依赖OpenCV的I/O。