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.
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%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%