Я пытаюсь прочитать изображение в 2D-массив, а затем внести изменения в его значения RGB и затем создать функцию изменения размера.Размеры изображения неизвестны, пока изображение не загружено, поэтому оно выглядит примерно так:
Я попытался передать "пиксели" в беззнаковый символ ** и пиксели [0] [0]на unsigned char * и еще несколько других способов, которые я не могу вспомнить.Я искал в Интернете различные методы, но ни один из них, похоже, не работает.Я видел, что если вы определяете размер одного из массивов как пиксели [] [40], это работает, но я не знаю размер до тех пор, пока изображение не будет загружено.
void invertImg(unsigned char **img, int height, int width)
{
int h, w;
for (h = 0; h < height; h++){
for (w = 0; w < width * 3; w += 3){
//Blue
img[h][w] = ~img[h][w];
//Green
img[h][w + 1] = ~img[h][w + 1];
//Red
img[h][w + 2] = ~img[h][w + 2];
}
}
}
// Get Image name and desired dimensions
char header[54];
unsigned char pixels[height][width * 3];
FILE *in = fopen(img, "rb");
FILE *out = fopen("out.bmp", "wb");
fread(header, 1, 54, in);
fread(pixels, 1, height * width * 3, in);
//function that the 2d array needs to be passed into
invertImg(pixels, height, width);
fwrite(header, sizeof(char), HEADER_SIZE, out);
fwrite(pixels, sizeof(char), height * width * 3, out);
fclose(in);
fclose(out);
Как я могу получить этот массив без знака в функцию, чтобы иметь возможность изменять его значения?