您使用的是8位/通道接口。而且,您只请求一个通道(stbi_load的最后一个参数)。如果只请求一个通道,您将无法获得RGB数据。 如果使用rgb图像,comps中可能会得到3或4,而最后一个参数中至少要有3。 stbi_load返回的data缓冲区将包含8bits * x * y * channelRequested或x * y * channelCount字节。您可以按如下方式访问(i,j)像素信息:
unsigned bytePerPixel = channelCount;
unsigned char* pixelOffset = data + (i + x * j) * bytePerPixel;
unsigned char r = pixelOffset[0];
unsigned char g = pixelOffset[1];
unsigned char b = pixelOffset[2];
unsigned char a = channelCount >= 4 ? pixelOffset[3] : 0xff;
1条答案
按热度按时间atmip9wb1#
您使用的是8位/通道接口。而且,您只请求一个通道(
stbi_load
的最后一个参数)。如果只请求一个通道,您将无法获得RGB数据。如果使用rgb图像,
comps
中可能会得到3或4,而最后一个参数中至少要有3。stbi_load返回的
data
缓冲区将包含8bits * x * y * channelRequested或x * y * channelCount字节。您可以按如下方式访问(i,j)像素信息:这样,您就可以获得RGB(A)每像素数据。