簡體   English   中英

獲取 stb_image 中一個像素的 RGB

[英]Get RGB of a pixel in stb_image

我創建並加載了這個圖像:

int x, y, comps;
unsigned char* data = stbi_load(".//textures//heightMapTexture.png", &x, &y, &comps, 1);

現在,我如何獲得該圖像的某個像素的 RGB?

您正在使用 8-bits-per-channel 接口。 此外,您只請求一個通道(給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;

這樣您就可以獲得每像素的 RGB(A) 數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM