2

文档令人cvPtr?D困惑:

这些函数返回一个指向特定数组元素的指针。数组维数应与传递给函数的索引数匹配,但 cvPtr1D 函数可用于顺序访问 1D、2D 或 nD 密集数组。

他们是否在“除了 cvPtr1D 函数”之后错过了逗号或其他内容,因为事实上,它没有任何意义。

它应该像下面这样,这样才有意义吗?

这些函数返回一个指向特定数组元素的指针。数组维数应与传递给函数的索引数匹配,除了 cvPtr1D 函数,<--- 插入的逗号可用于顺序访问 1D、2D 或 nD 密集数组。

4

2 回答 2

2

句子有点混乱。IIRC cvPtrxD(x > 1) 只能用于具有匹配维度的数组。它将返回相应地址的值。

cvPtr1D例外。因为它充当普通指针,所以它可以用于任何数组。问题是,您必须自己计算元素的地址。

例如,如果 2D 数组的大小为 20x20 并且线性存储,则cvPtr2D(10,10) 等效于。cvPtr1D(210)

以 1D 方式存储 2D 数组的常用公式是:index = yPos * width + xPos其中xPosyPos是沿各自轴的位置,并且width是沿轴的大小Y

这个想法可以推广到更高的维度。

PS:如果没有必要,不要使用 C API。C++ 更容易理解和使用。

于 2013-09-30T10:54:24.557 回答
0

即使用逗号也没有多大意义。不应该是:

这些函数返回一个指向特定数组元素的指针。除了 之外cvPtr1D,数组维度的数量应该与传递给函数的索引数量相匹配。在 `cvPtr1D 的情况下,索引可用于顺序访问 1D、2D 或 nD 密集数组

于 2013-09-30T11:02:30.350 回答