Предполагая, что каждый возвращенный двойник представляет пиксель.Вы можете определить функцию, которая извлекает пиксели следующим образом:
double get_pixel(int x, int y, double* data, int sizeC)
{
return data[x + y*sizeC];
}
Где sizeC
- ширина изображения (количество столбцов).
Затем можно использовать функцию выше длязаполните свой 2D массив следующим образом:
for(int i = 0; i < sizeC; i++)
for(int j = 0; j < sizeR; j++)
my2Darray[i][j] = get_pixel(i, j, data, sizeC);
Но затем обратите внимание, насколько это ненужно.Вам не нужен 2D-массив :), сделайте его простым и эффективным.
Вышеприведенная функция может быть частью структуры, представляющей изображение, где вы будете иметь sizeC, sizeR и данные, определенные как члены.
struct Image
{
int sizeC;
int sizeR;
double* data;
get_pixel(int x, int y)
{
return data[x + y*sizeC];
}
};
Затем для доступа к пикселям изображения, которые выможно просто сделать:
Image img;
// read image data and stuff
double p = img.get_pixel(4, 2);
Вы даже можете сделать его более красивым, переопределив оператор () вместо get_pixel, поэтому получение пикселя будет выглядеть примерно так:
double p = img(4, 2);