Ich weiß, dass opencv in Mat-Objekten als ein großes Array darstellt. Also, wenn ich 3 Kanäle Matte der Dimension 200x200 habe, dann im Speicher wird es diese Matte in einem Array der Größe 3x200x200 speichern. Oder allgemeiner: Jede Matte im Speicher wird als channels*rows*cols
gespeichert. Wir können solche Anordnung erhalten, wieOpencv im Speicher Mat-Darstellung
double *array = (double)mat.data;
unter der Annahme, dass Matrix vom Typ Doppel
Nun meine Frage ist, was die Art und Weise zu indizieren ist dieses Array zum Beispiel, wenn ich Element auf Kanal ch zugreifen möchten, Zeile r und Spalte c wird folgende gilt Indexierungs
array[ch*rows*cols + c * rows + r]
oder
array[ch*rows*cols + r * cols + c]
Grüße Ahsan
so Ich nehme an mit (chcols) du meinst ch multipliziert mit cols, aber es verwendet niemals den Zeilen- und Spaltenindex, der r und c –
at() Funktion sollte bevorzugt werden, anstatt tief zu tauchen. –