在迭代器中我们仅仅是获得图像矩阵的begin和end,然后增加迭代直至从begin到end,将*操作符添加在迭代器指针前,就可以访问当前指向的内容。
使用迭代器访问像素比较安全,不会出现越界的问题。
int main(){
int div=16;
Mat <span style="font-family: 'Microsoft YaHei';"> outputimage=imread("");//路径</span>
Mat_<Vec3b>::iterator it=outputimage.begin<Vec3b>();//开始位置的迭代器
Mat_<Vec3b>::iterator itend=outputimage.end<Vec3b>();//终止位置的迭代器
for(;it!=itend;++it){
(*it)[0]=(*it)[0]/div*div+div/2;
<pre name="code" class="html"> (*it)[1]=(*it)[1]/div*div+div/2;
(*it)[2]=(*it)[2]/div*div+div/2;
}
imshow("处理后的图像",outputimage);
waitKey(0);
}
关于迭代器的更加详细介绍,参考下面一篇文章