我正在使用stbi_image库来加载图片。我有一个JPG,它被加载到具有给定宽度和高度的unsigned char *(#components = 3,每个都有8位)。为了重建高度值,我猜测我必须将每个组件重新组装到他们的位置:
height_map_data = stbi_load(heightmap_path, &width, &height, &comp, 1);
if(height_map_data != nullptr)
{
unsigned char* current_head = height_map_data;
unsigned int r, g, b, a;
for(int i = 0; i < height; ++i)
{
for(int j = 0; j < width; ++j)
{
//???? get height ????
//assume comp == 3, img is in rgb, 8bpp
unsigned int pix = current_head[0] << 16 | current_head[1] << 8 | current_head[2];
float h = pix / (256.f * 256 * 256); //is this right??
current_head += comp;
}
}
}
那么如何从图像中正确解开高度?这个图像有不同的RGB数字,所以我猜测它不是8位灰度,所以我不认为我可以使用其中一个组件。