我正在尝试使用:
cv::Mat source;
const int histSize[] = {intialframes, initialWidth, initialHeight};
source.create(3, histSize, CV_8U);
用于将多个图像保存在一个矩阵中。但是,当我这样做时,它会给我dims = 3
and -1
in rows
and cols
。这是对的吗?如果不是,它的错误是什么?如果是的话,我怎样才能一张一张地访问我的图片?
我正在尝试使用:
cv::Mat source;
const int histSize[] = {intialframes, initialWidth, initialHeight};
source.create(3, histSize, CV_8U);
用于将多个图像保存在一个矩阵中。但是,当我这样做时,它会给我dims = 3
and -1
in rows
and cols
。这是对的吗?如果不是,它的错误是什么?如果是的话,我怎样才能一张一张地访问我的图片?
阅读类的文档cv::Mat
-> doc
你可以看到cv::Mat.rows
和cv::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;