我正在尝试使用:
cv::Mat source;
const int histSize[] = {intialframes, initialWidth, initialHeight};
source.create(3, histSize, CV_8U);
用于在一个矩阵中保存多个图像。但是,当我这样做时,它会在dims = 3
和-1
中为我rows
和cols
。
这是对的吗?
如果不是它的错误是什么?
如果是,我如何逐个访问我的图像?
答案 0 :(得分:1)
阅读课程cv::Mat
的文档 - > doc
您可以看到cv::Mat.rows
和cv::Mat.cols
是2D数组中的行数和列数,否则为。
使用source.create(3, histSize, CV_8U);
创建3D数组。
在cv::Mat
doc中写了如何访问元素。
使用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;