Что такое Vec4b, MatObj.ptr в 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.

Любое разъяснение о том, что делает первый код, будет действительно полезно для моего сознания.

0

Решение

Так что я действительно не понимаю, что делает Vec4b.

Как видно из API OpenCV, это определяется следующим образом:

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 что указывает на 51-й ряд Mat mMat,


Редактировать: Это все MatДанные непрерывны после всех пикселей текущей строки, например, используя большой индекс в rv[index] (за index >= mMat.cols), вы получите данные из других строк.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]