[英]What is Vec4b, MatObj.ptr in opencv ?
我的问题基于以下代码。
Vec4b *rv = mMat.ptr<Vec4b> (50);
我不明白Vec4b是什么意思。 我知道Vec4i的意思是线段坐标。 因此,类似地,我尝试查找其中包含的内容。 下面的代码
std::cout<<rv[1]<<std::endl;
给出了输出:
[8、7、10、10]
我不知道这些参数是什么意思。 令人惊讶的是,它显示了大于四个参数的输出。 例如rv [4],rv [5]等。
所以我真的不明白Vec4b的作用。 也是mMat.ptr。 我找不到有关Vec4b和Mat.ptr的好的在线资源。
任何有关第一个代码的功能的澄清都将真正有助于启发我的思想。
所以我真的不明白Vec4b的作用。
从OpenCV的API可以看出,其定义如下:
template<typename _Tp, int n> class Vec : public Matx<_Tp, n, 1> {...};
...
typedef Vec<uchar, 4> Vec4b;
换句话说,它包含4个uchar
( unsigned char
)值。 Vec
类通常用于描述多通道阵列的像素类型,例如CV_RGBA
。
也是mMat.ptr。
Mat::ptr()
返回一个指向指定矩阵行的指针。
因此,对于您的代码,
Vec4b *rv = mMat.ptr<Vec4b> (50);
之后, rv
将是类型为Vec4b
指针,该指针指向Mat mMat
第51
行。
编辑:由于所有Mat
的数据都是连续的,因此在当前行的所有像素之后,例如在rv[index]
使用大索引(对于index >= mMat.cols
),您将从其他行中获取数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.