先上代码一:
void iterator_test1()
{
Mat img = Mat::eye(3,3,CV_8U);
Mat_<uchar>::iterator it = img.begin<uchar>();
Mat_<uchar>::iterator itend = img.end<uchar>();
for(; it != itend; ++it)
{
*it = *it * 2 + 1;
}
cout << img;
}
可以再利用 Mat_模板让书写简单一点点
代码二:
void iterator_test2()
{
Mat img = Mat::eye(3,3,CV_8U);
Mat_<uchar> img2 = img; //用模板,可简洁之后书写
Mat_<uchar>::iterator it = img2.begin();
Mat_<uchar>::iterator itend = img2.end();
// Mat_<Vec3b>::const_iterator it; //若不改变原值,常量迭代器也行
for(; it != itend; ++it)
{
*it = *it * 2 + 1;
}
cout << img;
}
值得一提的是:当迭代器本身值不变的时候,可以使用
Mat_<Vec3b>::const_iterator it; //若不改变原值,常量迭代器可用