访问cvCreateMatND的元素
Accessing elements of cvCreateMatND
我是OpenCV的新手,我正在尝试创建一个n维数组,并使用CvMatND访问每个元素。
我可以通过数据[I*step+j*nchannels+0]访问2D矩阵,我如何访问创建的矩阵的元素
int size[] = { 12, 12, 12 };
CvMatND* matB = cvCreateMatND(3, size, CV_8U);
int *Data = matA->data.i;
感谢
我已经复习并测试了以前的答案,正如您所发现的,它并不准确。
这是对三维数组的所有元素进行迭代的工作代码。
int size[] = { 5, 5, 5 };
CvMatND* matA = cvCreateMatND(3, size, CV_32F);
cvSetZero(matA);
for (int x = 0; x < matA->dim[0].size; x++)
{
for (int y = 0; y < matA->dim[1].size; y++)
{
for (int z = 0; z < matA->dim[2].size; z++)
{
unsigned char* ptr = matA->data.ptr + ((size_t)x * matA->dim[0].step) + ((size_t)y * matA->dim[1].step) + ((size_t)z * matA->dim[2].step);
float value = *(float*)ptr;
printf("x:%d y:%d z:%d --> %fn", x, y, z, value);
}
}
}
您可以将at<type>(idx[])
与type
(图像的数据类型)和idx[]
(索引数组)一起使用。例如,要访问类型为CV_32F
的3D矩阵M
的第2行、第3列和通道4,您需要执行以下操作:
int idx[3] = {2,3,4};
float x = M.at<float>(idx);
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 使用不带参数的函数访问结构元素
- 给定n个元素的m个集合.在C++中找到出现在最大集合数中的元素
- C++如何通过用户输入删除列表元素
- lower_bound()返回最后一个元素
- 基于多个条件处理地图中的所有元素
- 调整大小后指向元素值的指针unordered_map有效?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 使用函数"remove"删除重复元素
- 具有最大子序列大小的序列,每个元素都相同
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何将元素添加到数组的线程安全函数?
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- 我想访问std::unique_ptr中的一个特定元素
- 如何通过 getter 函数删除矢量的元素?
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 从控制台中删除最后打印的元素
- 访问cvCreateMatND的元素