opencv学习-使用迭代器iterator遍历

             1.Mat Iterator_是一个模板类

2.一个图像迭代器使用如下方式声明:
Mat Iterator_ it;或Mat_::iterator it;【推荐使用】
3.使用常规的begin和end来遍历所有像素。
4.模板函数begin,end
5.Mat_::iterator it可以避免在使用begin和end方法的时候还要指定迭代器的类型。

` 1.Mat Iterator_是一个模板类
2.一个图像迭代器使用如下方式声明:
Mat Iterator_ it;或Mat_::iterator it;【推荐使用】
3.使用常规的begin和end来遍历所有像素。
4.模板函数begin,end
5.Mat_::iterator it可以避免在使用begin和end方法的时候还要指定迭代器的类型。

#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <vector>
using namespace cv;
using namespace std;
void colordec(Mat &image, int div = 64)
{
 Mat_<Vec3b>::iterator it = image.begin<Vec3b>();
 Mat_<Vec3b>::iterator itend = image.end<Vec3b>(); 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; }}
int main()
{
 Mat src = imread("3.jpg");
 colordec(src);
 namedWindow("picture");
 imshow("picture", src);
 waitKey(0);
 return 0;}

猜你喜欢

转载自blog.csdn.net/qq_42017043/article/details/83351553