首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

看他怎么“折腾”(五)

01

接着来看遍历Mat空间的方式,今天介绍一种迭代器的方式。

此处的迭代器与C++中支持的迭代是一个概念,因为OpenCV本身就是用C++实现的。

02

迭代器本身抽象性比较强,所以天生具有一些优点。

使用迭代器遍历Mat空间一个典型的好处是不用关心图像的行和列,直接对迭代器指针进行索引和做相应的访问即可。这样就省去了思考如何根据行和列来寻找正确的位置所带来的麻烦。封装性进一步完善。

03

此处又到我们的代码演示环节。

auto it = mat.begin();

auto it_end = mat.end(); //C++ 11特性

for (; it != it_end; it++) {

(*it).val[0] = 0; //B

(*it).val[1] = 0; //G

(*it).val[2] = 255; //R

}

04

下面是关于代码示例的一些说明喽。

(1) auto关键字是C++11所支持的一种新特性,作用是自动推断类型,从而简化编程工作,如果不支持C++ 11,就需要将迭代器的完整类型写出,比较冗长,此处省略,如有需要,就请自行更正吧;

(2)用迭代器访问,每一个像素作为一个整体,具体的访问和改变可以类似于指针访问,通过(*)来解引用;

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171219G03ZWH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券