什么是Vec4b, MatObj.ptr在opencv



我的问题是基于以下代码。

Vec4b *rv = mMat.ptr<Vec4b> (50);
我不明白Vec4b是什么意思。我知道Vec4i,也就是线段坐标。同样地,我试着找出它包含什么。以下代码
std::cout<<rv[1]<<std::endl;

给出了一个输出:

[8,7,10,10]

我不知道那些参数是什么意思。令人惊讶的是,它显示了大于4个参数的输出。如。,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 mMat51 -第一行。


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

相关内容

  • 没有找到相关文章

最新更新