Ich verwende OpenCV, um zwei Blobs in zwei Bildern zu vergleichen. Angenommen, ich kenne ein Paar Blobs, die wahrscheinlich ähnlich sind, und ich kenne ihre Indizes in den Kontur-Arrays (generiert von cvFindContours()), wie bekomme ich Zugriff auf eine Kontur in einer konstanten Zeit?OpenCV: Wie kann man nach Aufruf cvFindContours() auf eine Kontur in O (1) zugreifen?
Die umständlichste Methode ist es, die Verknüpfungsoperation (contours = contours -> h_next) mehrmals zu verwenden, aber ich frage mich, ob es eine schnellere Möglichkeit gibt, eine Kontur in einem Array abzurufen.
Ich benutze CV_RETR_EXTERNAL und CV_CHAIN_APPROX_NONE beim Aufruf von cvFindContours().
Danke! -J.C.
Danke für die Kommentare! Ich denke, cvGetSeqElem ist nicht was ich will: Es ruft ein Element aus einer Sequenz ab - in diesem Fall ist es ein Punkt auf einer Kontur. Ich stimme zu, dass cvCvtSeqToArray die Arbeit machen kann, aber wie Sie vielleicht bemerken, ist es schwierig, Konturen wie diese zu manipulieren (neu/löschen, Speicherkopie, etc ...). – galactica