Ich wäre ja froh wenn es das wäre.
Die Daten liegen sequentiell im Speicher. K ist der Zähler für das kontinuierliche Array, i und j die für Zeilen und Spalten.
Dabei gilt : k = i * image.size().width + j
Das hier:
entspricht dem hier:Code:for( i = 0, k = 0 ; i < image.size().height ; i++ ) { for( j = 0 ; j < image.size().width ; j++, k++ ) { image_data[k][0] = image.at<double>(i, j); image_data[k][1] = 0.0; } }
Der fancy image.at operator erspart einem nur den Pointer-Typecast und man kann direkt Pixel adressieren ohne sich über die Repräsentation im Speicher im klaren zu sein. (Deswegen muss hier auch explizit dach (double*) gecasted werden weil ich den Datentyp kenne.) Zweiteres ist halt schneller aber hässlicher.Code:/* load images' data to FFTW input*/ for( k = 0 ; k < size ; k++ ) { image_data[k][0] = ((double *) image.data)[k]; image_data[k][1] = 0.0; }







Zitieren

Lesezeichen