Mat的迭代器使用

如果你熟悉 C++的 STL 库,那一定了解迭代器(iterator)的使用。迭代器可以方便地遍历所有元素。Mat 也增加了迭代器的支持,以便于矩阵元素的遍历。下面的例程功能跟上一节的例程类似,但是由于使用了迭代器,而不是使用行数和列数来遍历,所以这儿没有了 i 和 j 变量,图像的像素值设置为一个随机数。

#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;

}

 

posted on 2017-03-15 15:18  gary_123  阅读(418)  评论(0编辑  收藏  举报

导航