2011-01-08 33 views
2

我使用OpenCV的兩個斑點在比較兩個圖像。假如我知道 一對很可能是類似的斑點,我知道他們在指數輪廓陣列 (由cvFindContours產生()),我怎麼能得到 訪問一個輪廓一定時間內?OpenCV的:如何調用cvFindContours後訪問一個輪廓在O(1)()?

最麻煩的方法是多次使用鏈接操作(輪廓=輪廓 - > h_next),但我不知道是否有更快的方法來檢索數組中的一個輪廓。

我在調用cvFindContours()時使用CV_RETR_EXTERNAL和CV_CHAIN_APPROX_NONE。

謝謝! -J.C.

回答

2

我覺得功能cvGetSeqElem你想要做什麼。引述OpenCV docs:「該函數具有O(1)時間複雜度假設塊的數目大於元件的數目小得多」在這種情況下,我認爲「塊」的意思是「輪廓」。

此外,看看cvCvtSeqToArraylink),它將一個序列複製到一個連續的內存塊。

+0

感謝您的意見!我想cvGetSeqElem是不是我想要的:它檢索從一個序列的一個元素 - 在這種情況下,它的輪廓上的一個點。我同意cvCvtSeqToArray可以做的工作,但你可能會注意到,這是尷尬的操縱輪廓像這樣的(新/刪除,內存複製,等...)。 – galactica 2011-01-10 21:52:33