c++ - 使用简单的 opengl 图像库(SOIL)加载图像(颜色空间 : GRAY)

标签 c++ image png soil

我想读出灰度图像的像素值。使用 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/

相关文章:

c++ - 如何使用 WinApi 设置最小窗口大小

html - 如何使用 CSS (WordPress) 响应大背景图片

python - 在 Keras 训练模型图像输入中选择特定的一组 RGB channel

javascript - 将 PNG 分层(HTML5、JS)

java - 在图像中嵌入代码

python - 如何在Python中导入png图像

c++ - 这个宏语句是合法的 C++ 还是其他什么?如果它是合法的,它是如何工作的

c++ - 谈论套接字时的同步和异步术语

iphone - 在 iPhone 中裁剪星形图像

c++ - 标准库方法的成员函数指针问题