前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看他怎么“折腾”(五)

看他怎么“折腾”(五)

作者头像
视界音你而不同
发布2020-04-10 16:52:29
2140
发布2020-04-10 16:52:29
举报
接着来看遍历Mat空间的方式,今天介绍一种迭代器的方式。

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

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

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

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

代码语言:javascript
复制
auto it = mat.begin<Vec3b>();
auto it_end = mat.end<Vec3b>(); //C++ 11特性
for (; it != it_end; it++) {
 (*it).val[0] =  0;    //B
 (*it).val[1] =  0;    //G
 (*it).val[2] = 255;   //R
}

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

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

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

视频图像

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 视界音你而不同 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档