OpenCV: Matrix Iteration

8

Ich bin neu bei OpenCV. Ich versuche, Iterator anstelle von "für" -Schleife zu verwenden, was für meinen Fall zu langsam ist. Ich habe einige Codes wie folgt ausprobiert:

%Vor%

Meine Frage hier ist: Wie kann ich eine for-Schleife konvertieren wie:

%Vor%

in den Iteratormodus? Das heißt, wie kann ich "i +2, i + 3" in Iteratorform machen? Ich kann nur den entsprechenden Wert mit "* it" bekommen, denke ich, aber ich konnte seine Zählnummer nicht bekommen. Vielen Dank im Voraus.

    
E_learner 15.08.2012, 21:59
quelle

2 Antworten

20

Es ist nicht die for-Schleife, die langsam ist, sondern die exampleMat.at<int>(i) , die eine Bereichsüberprüfung durchführt.

Um alle Pixel effizient zu durchlaufen, können Sie einen Zeiger auf die Daten am Anfang jeder Zeile mit .ptr ()

erhalten %Vor%     
Martin Beckett 16.08.2012, 04:10
quelle
1

Sie benötigen eine Art von Zählvariablen und müssen diese selbst deklarieren und aktualisieren. Eine kompakte Möglichkeit, dies zu tun, wäre

%Vor%

Wenn Sie nach superschnellem Zugriff suchen, würde ich jedoch empfehlen, den Datenzeiger selbst zu manipulieren. Eine ausführliche Erläuterung der Iterationsgeschwindigkeit finden Sie unter OpenCV 2 Computer Vision Application Programming Cookbook auf Seite 51 (65 in pdf). Ihr Code sieht dann möglicherweise ähnlich aus wie

%Vor%     
Hammer 16.08.2012 00:50
quelle

Tags und Links