Представьте, что у меня есть следующее:
CvMat* mat = cvCreateMat(3,3,CV_16SC3)
Это матрица 3x3 целых чисел канала 3.
Теперь, если вы посмотрите на документацию OpenCV, вы найдете следующее в качестве замедления для cvMat:
typedef struct CvMat {
int type;
int step;
int* refcount;
union
{
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data;
union
{
int rows;
int height;
};
union
{
int cols;
int width;
};
} CvMat;
Теперь я хочу поиграть с data.ptr, который является указателем на данные, хранящиеся в cvMat. Тем не менее, мне трудно понять, как складывается память. Если у меня 3-канальная матрица, как это работает? Для одного канала это просто, потому что это просто простая матрица MxN, где M - это строки, а N - cols. Однако для 3-х каналов есть 3 эти матрицы MxN? Может ли кто-нибудь показать мне, как я собираюсь инициализировать 3-канальную матрицу через data.ptr и как получить доступ к этим значениям, пожалуйста? Спасибо.