opencv 遍历方法
矩阵元素表达
OpenCV 中有模板类 Vec,可以表示一个向量。OpenCV 中使用 Vec 类预定义了一
些小向量,可以将之用于矩阵元素的表达。
typedef Vec<uchar, 2> Vec2b;
typedef Vec<uchar, 3> Vec3b;
typedef Vec<uchar, 4> Vec4b;
typedef Vec<short, 2> Vec2s;
typedef Vec<short, 3> Vec3s;
typedef Vec<short, 4> Vec4s;
typedef Vec<int, 2> Vec2i;
typedef Vec<int, 3> Vec3i;
typedef Vec<int, 4> Vec4i;
typedef Vec<float, 2> Vec2f;
typedef Vec<float, 3> Vec3f;
typedef Vec<float, 4> Vec4f;
typedef Vec<float, 6> Vec6f;
typedef Vec<double, 2> Vec2d;
typedef Vec<double, 3> Vec3d;
typedef Vec<double, 4> Vec4d;
typedef Vec<double, 6> Vec6d;
对于 Vec 对象,可以使用[]符号如操作数组般读写其元素
Vec3b color; //用 color 变量描述一种 RGB 颜色
color[0]=255; //B 分量
color[1]=0; //G 分量
color[2]=0; //R 分量
像素值读写方法
1.at函数
at函数是MAT类自带函数。
功能为读取某个像素。
返回值为像素类型
使用方法为:变量名 = 对象名.at<数据类型>(i+j)
2.迭代器
c++ stl 标准库中自带函数,类似指针
定义方法;MatIterator_<数据类型> 变量名;
对象名.begin<数据类型>()代表对象开头
对象名.end<数据类型>() 代表对象结尾
具体请参照c++STL标准库
3.指针读写
通过指针读写可以提高效率,但c与c++没有边界检查功能,因此更加危险。
定义方法:数据类型* p =对象名.ptr<uchar>(i);
对象名.rows 行数;
对象名.cols 列数;