我想读出灰度图像的像素值。使用 RGB 图像我没有问题。代码很简单:
int width, height;
unsigned char* image = SOIL_load_image(filepath.c_str(), &width, &height, 0, SOIL_LOAD_RGB);
std::cout << "size of image : " << size << " width: " << width << " height: " << height << std::endl;
现在我想加载一个颜色空间为 GRAY 的图像 (png),我想我可以简单地将 SOIL_LOAD_RGB 更改为 SOIL_LOAD_L,但这行不通。
我在控制台上的输出是: 图片大小:-237407992 宽度:10 高度:-1312230988
而且它不是恒定的。只有宽度保持为 10,每次运行程序时高度都在变化。
在处理灰度图像时,有什么我必须改变或考虑的吗?
最佳答案
您应该将第三个参数从“0”更改为“&channel”,如下所示
unsigned char *image = SOIL_load_image(filepath.c_str(), &width, &height, &channel, SOIL_LOAD_L);
关于c++ - 使用简单的 opengl 图像库(SOIL)加载图像(颜色空间 : GRAY),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40204329/