前言
在面向对象的编程中,循环数据集合通常是使用迭代器完成的。迭代器是专门为遍历集合的每个元素而构建的类,隐藏了如何迭代给定集合中每个元素的具体操作。信息隐藏原理的应用使扫描集合更容易、更安全;同时,无论使用什么类型的集合,迭代的形式都是相似的。标准模板库 (Standard Template Library, STL) 具有与其每个集合类相关联的迭代器类。而 OpenCV 同样提供了一个 cv::Mat 迭代器类,该类与 C++ STL 中的标准迭代器兼容。在本节中,我们使用继续减色任务讲解如何使用迭代器扫描图像。
使用迭代器扫描图像
Cv::Mat 实例的迭代器对象可以通过首先创建一个 cv::MatIterator_ 对象来获得。与 cv::Mat_ 的情况一样,下划线表示这是一个模板子类。实际上,由于图像迭代器用于访问图像元素,因此在编译时必须知道返回类型。迭代器声明如下:
或者,也可以使用 Mat_ 模板类中定义的迭代器类型: