【发布时间】:2017-06-04 09:42:51
【问题描述】:
当使用
导入图像时loadImage("...")
命令,像这样遍历像素:
img.loadPixels();
int w = img.width;
int h = img.height;
for (int y = 0; y < h; y++) {
for (int x = 0; x < w; x++) {
int loc = x + y*w;
float r = red(img.pixels[loc]);
float g = green(img.pixels[loc]);
float b = blue(img.pixels[loc]);
println(r + ", " + g + ", " + b);
}
}
即使图像文件的每个通道的深度为 16 位,RGB 值似乎总是介于 0 和 255 之间,其中值应该介于 0 和 65535 之间。 是否可以保持正确的颜色深度?
【问题讨论】:
-
你不能把数字乘以
65535/255吗? -
这是行不通的,因为即使数字 r g 和 b 存储为浮点数,它们基本上都是整数,因此乘法实际上并不能恢复原始深度。
-
red()、green()和blue()函数返回标准化值。也许尝试直接访问pixels[loc]值而不是通过颜色函数传递它? -
好点,但它似乎也不起作用,因为内部像素[]数据已经以 32 位颜色格式提供,每个 A、R、G 和 B 为 8 位。我开始认为有必要编写自定义 loadImage(...) 函数。
-
这是什么语言?
标签: image-processing processing color-depth