繁体   English   中英

什么是opencv中的Vec4b,MatObj.ptr?

[英]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个ucharunsigned char )值。 Vec类通常用于描述多通道阵列的像素类型,例如CV_RGBA

也是mMat.ptr。

Mat::ptr()返回一个指向指定矩阵行的指针。


因此,对于您的代码,

Vec4b *rv = mMat.ptr<Vec4b> (50);

之后, rv将是类型为Vec4b指针,该指针指向Mat mMat51行。


编辑:由于所有Mat的数据都是连续的,因此在当前行的所有像素之后,例如在rv[index]使用大索引(对于index >= mMat.cols ),您将从其他行中获取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM