博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OPENCV学习笔记2-3_图像遍历(迭代器)
阅读量:5447 次
发布时间:2019-06-15

本文共 1750 字,大约阅读时间需要 5 分钟。

  Iterators (迭代器)are specialized(专门) classes that are built to go over(遍历) each element of a collection(集合的每个元素), This application of the information-hiding principle makes scanning a collection easier and safer.

  An iterator object for a cv::Mat instance(实例) can be obtained by first creating a cv::MatIterator_ object. As is the case with cv::Mat_, the underscore(下划线) indicates that this is a template subclass(模板子类). since(因为) image iterators are used to access the image elements, the return type(类型) must be known at the time of compilation(编译). The iterator is then declared as follows:

  cv::MatIterator_<cv::Vec3b> it;

  Alternatively(另外), you can also use the iterator type defined inside the Mat_ template class as follows:

  cv::Mat_<cv::Vec3b>::iterator it;

  Consequently(现在), our color reduction function is now written as follows:

//Scanning an image with iteratorsvoid colorReduce4(cv::Mat &image, int div = 64) {    // obtain iterator at initial position    cv::Mat_
::iterator it = image.begin
(); // obtain end position cv::Mat_
::iterator itend = image.end
(); // loop over(遍历)all pixels for (; it != itend; ++it) { (*it)[0] = (*it)[0] / div * div + div / 2; (*it)[1] = (*it)[1] / div * div + div / 2; (*it)[2] = (*it)[2] / div * div + div / 2; }}//Remember that the iterator here returns a cv::Vec3b instance because we are processing a color image.

  用begin方法,在开始位置(本例中为图像的左上角)初始化迭代器。对于cv::Mat实例,可以使用image.begin<cv::Vec3b>()。还可以在迭代器上使用数学计算,例如若要从图像的第二行开始,可以用image.begin<cv::Vec3b>()+image.cols初始化cv::Mat迭代器。可以用运算符++来移动到下一个元素,也可以指定更大的步幅。例如用it+=10,对每10个像素处理一次。

转载于:https://www.cnblogs.com/yunfung/p/7553703.html

你可能感兴趣的文章
【BZOJ4278】[ONTAK2015]Tasowanie 后缀数组
查看>>
【BZOJ2045】双亲数 莫比乌斯反演
查看>>
【CF772D】Varying Kibibits FWT
查看>>
微信网页授权调试
查看>>
不要有这样的思维定势
查看>>
十万个为什么 —— 自然的好奇
查看>>
指针应用时的注意事项
查看>>
作为电磁波的 Wi-Fi 信号
查看>>
一步步学会用docker部署应用(nodejs版)
查看>>
让表单input等文本框为只读不可编辑的方法-转
查看>>
Flink window Function - ProcessAllWindowFunction
查看>>
创建物料批次特性
查看>>
UI基础一:值节点赋值
查看>>
sql
查看>>
快速排序练习(二)
查看>>
网上见到一同行发的隐私政策 备以后用
查看>>
将响应数据进行压缩处理的过滤器(CompressionFilter)
查看>>
安装Hadoop
查看>>
感性的人最理性,理性的人很感性
查看>>
《Java开发手册》学习进程之第4章控制流程语句
查看>>