Я смотрю на карманный справочник по алгоритмам обработки изображений (http://adaptiveart.eecs.umich.edu/2011/wp-content/uploads/2011/09/The-pocket-handbook-of-image-processing-algorithms-in-C.pdf), и я наткнулся на этот код (см. Ниже).Код алгоритма обработки изображений, указатели интерпретации
Может кто-нибудь помочь мне понять
*(Im->Data + (x)*Im->Cols + (y))
Это на Pdf странице 33.
#define pix(Im,x,y) \
*(Im->Data + (x)*Im->Cols + (y))
/* Compute and return area for objects */
int area(struct Image *In, int x1, int y1, int x2, int y2, unsigned char ObjVal){
long i, j, rows;
int area_value = 0;
for(i=x1; i<=x2; ++i)
for(j=y1; j<=y2; ++j){
if(pix(In,i,j)==ObjVal)++area_value;
}
return(area_value);
}
Это предполагая 2 одномерный массив, хранящийся в строке-мажорных порядке. Вот как вы вычисляете, где datapoint (x, y) в m по n 2D-массиву. – rts1
Изображение хранится в массиве, и что будет 'p [x] [y]' в двумерном массиве - это 'p [x * columns + y]' (или, что эквивалентно, столбцы '* (p + x *) + y) '). – molbdnilo
использует современный интерфейс C++ – dynamic