0

我正在尝试使用:

cv::Mat source;
const int histSize[] = {intialframes, initialWidth, initialHeight};
source.create(3, histSize, CV_8U);

用于将多个图像保存在一个矩阵中。但是,当我这样做时,它会给我dims = 3and -1in rowsand cols。这是对的吗?如果不是,它的错误是什么?如果是的话,我怎样才能一张一张地访问我的图片?

4

1 回答 1

1

阅读类的文档cv::Mat-> doc 你可以看到cv::Mat.rowscv::Mat.cols是二维数组中的行数和列数 -1 否则。

source.create(3, histSize, CV_8U);您一起创建 3D 阵列。

cv::Mat文档中写了如何访问元素。使用 create 方法,矩阵是连续的,并且以逐平面组织的方式。


编辑

文档中类定义代码之后的第一部分文本告诉您如何使用矩阵的step[]参数访问矩阵的每个元素:

如果要访问(u, v)图像的像素,则i需要获取指向数据的指针并使用指针的算术来达到所需的像素:

int sizes[] = { 10, 200, 100 };
cv::Mat M(3, sizes, CV_8UC1);

//get a pointer to the pixel
uchar *px = M.data + M.step[0] * i + M.step[1] * u + M.step[2] * v;

//get the pixel intensity
uchar intensity = *px;
于 2013-10-09T15:25:16.503 回答