的文档令人cvPtr?D困惑:
这些函数返回一个指向特定数组元素的指针。数组维数应与传递给函数的索引数匹配,但 cvPtr1D 函数可用于顺序访问 1D、2D 或 nD 密集数组。
他们是否在“除了 cvPtr1D 函数”之后错过了逗号或其他内容,因为事实上,它没有任何意义。
它应该像下面这样,这样才有意义吗?
这些函数返回一个指向特定数组元素的指针。数组维数应与传递给函数的索引数匹配,除了 cvPtr1D 函数,<--- 插入的逗号可用于顺序访问 1D、2D 或 nD 密集数组。
句子有点混乱。IIRC cvPtrxD(x > 1) 只能用于具有匹配维度的数组。它将返回相应地址的值。
是cvPtr1D例外。因为它充当普通指针,所以它可以用于任何数组。问题是,您必须自己计算元素的地址。
例如,如果 2D 数组的大小为 20x20 并且线性存储,则cvPtr2D(10,10) 等效于。cvPtr1D(210)
以 1D 方式存储 2D 数组的常用公式是:index = yPos * width + xPos其中xPos和yPos是沿各自轴的位置,并且width是沿轴的大小Y。
这个想法可以推广到更高的维度。
PS:如果没有必要,不要使用 C API。C++ 更容易理解和使用。
即使用逗号也没有多大意义。不应该是:
这些函数返回一个指向特定数组元素的指针。除了 之外
cvPtr1D,数组维度的数量应该与传递给函数的索引数量相匹配。在 `cvPtr1D 的情况下,索引可用于顺序访问 1D、2D 或 nD 密集数组