OpenCV: Matrix-Iteration
Ich bin neu in OpenCV. Ich bin versucht, iterator anstelle von "for" - Schleife, die ist zu langsam für meinen Fall. Ich habe versucht einige codes wie diesen:
MatIterator_<uchar> it, end;
for( it = I.begin<uchar>(), end = I.end<uchar>(); it != end; ++it)
{
//some codes here
}
Meine Frage hier ist: wie kann ich umwandeln einer for-Schleife wie:
for ( int i = 0; i < 500; i ++ )
{
exampleMat.at<int>(i) = srcMat>.at<int>( i +2, i + 3 )
}
in iterator-Modus? Das ist, wie kann ich das "i +2, i + 3" in iterator-form? Ich kann nur bekommen, wird der entsprechende Wert durch " *es ", denke ich, aber ich konnte nicht zählen seine Nummer.
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist nicht die for-Schleife, die ist langsam, es ist die
exampleMat.at<int>(i)
tut Bereich überprüft.Um effizient Schleife über alle Pixel Sie können einen Zeiger auf die Daten am Anfang jeder Zeile mit .- ptr()
auto p = img.ptr<int>(row)
aber wie Sie dasint
in dieser Aussage?Müssen Sie irgendeine Art von zähl-variable und Sie werden erklären müssen, und aktualisieren Sie Sie selbst. Eine kompakte Art und Weise, dies zu tun wäre
wenn Sie sich für super schnellen Zugriff allerdings würde ich empfehlen, die Manipulation der Daten Zeiger selbst. Für eine tolle Erklärung Durchlaufen Geschwindigkeit Blick auf OpenCV 2 Computer Vision Application Programming Cookbook auf Seite 51 (65 im pdf). Dein code könnte dann ungefähr so Aussehen lik