迭代器(iterator)是一中检查容器内元素并遍历元素的数据类型。
迭代器可以方便地遍历所有元素。Mat 也增加了迭代器的支持,以便于矩阵元素的遍历。
#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std; using namespace cv;
int main(int argc, char* argv[]) {
Mat grayim(600, 800, CV_8UC1); Mat colorim(600, 800, CV_8UC3);
//遍历所有像素,并设置像素值
MatIterator_<uchar> grayit, grayend;
for (grayit = grayim.begin<uchar>(), grayend = grayim.end<uchar>(); grayit != grayend; ++grayit)
*grayit = rand() % 255;
//遍历所有像素,并设置像素值
MatIterator_<Vec3b> colorit, colorend;
for( colorit = colorim.begin<Vec3b>(), colorend = colorim.end<Vec3b>(); colorit != colorend; ++colorit) {
(*colorit)[0] = rand()%255; //Blue
(*colorit)[1] = rand()%255; //Green
(*colorit)[2] = rand()%255; //Red
}
//显示结果
imshow("grayim", grayim); imshow("colorim", colorim); waitKey(0);
return 0;
}
Mat类 创建第一个对象grayim
原来for遍历中的ij(代表对象的行数列数)变成了begin,end
像素值也变成了随机数:rand()%255
Mat类 创建第二个对象colorim
原来for遍历中的ij(代表对象的行数列数)变成了begin,end
原来的012代表BGR,全部变成了随机数(0-99)%255