我在第channels[0][x] = luma_lut[row[x]];
行的代码中遇到了最大错误:
typedef struct {
const unsigned char *const *const row_pointers;
float gamma_lut[256];
} image_data;
void convert_image_row_gray(const float * __restrict channels[], const int num_channels, const int y, const int width, void * user_data)
{
image_data *im = (image_data*)user_data;
const unsigned char *row = im->row_pointers[y];
const float *luma_lut = im->gamma_lut; // init converts it
for (int x = 0; x < width; x++) {
channels[0][x] = luma_lut[row[x]];
}
}
此代码有什么问题?
答案 0 :(得分:1)
channels
以const float **
类型声明,这意味着channels[i][j]
是const float
类型的左值。您不能更改const float
左值 - 它们是const
。
鉴于此channels
声明您可以更改channels
本身,您可以更改channels[i]
,但不能更改channels[i][j]
。