OpenCV:如何在调用cvFindContours()后访问O(1)中的一个轮廓?

时间:2011-01-08 22:02:56

标签: opencv

我正在使用OpenCV来比较两个图像中的两个blob。假设我已经知道了 一对可能相似的斑点,我知道他们的指数 在轮廓数组中(由cvFindContours()生成),我该怎么做 在恒定时间内访问一个轮廓?

最麻烦的方法是多次使用链接操作(contours = contours-> h_next),但我想知道是否有更快的方法来检索数组中的一个轮廓。

我在调用cvFindContours()时使用CV_RETR_EXTERNAL和CV_CHAIN_APPROX_NONE。

谢谢! -J.C。

1 个答案:

答案 0 :(得分:2)

我认为函数cvGetSeqElem可以满足您的需求。引用OpenCV docs:“该函数具有O(1)时间复杂度,假设块的数量远小于元素的数量。”我认为“块”在这种情况下意味着“轮廓”。

另外,请查看cvCvtSeqToArraylink),它将序列复制到一个连续的内存块。