【发布时间】:2014-09-10 08:20:12
【问题描述】:
在photoshop中,通常需要手动调整设置R、G或B的最大值。
是否有任何图像库(python、java、C#。)来获取、计算或设置 R、G 和 B 的最大值?
我查看了 PIL(python 图像库),但没有找到重点。
谢谢
【问题讨论】:
在photoshop中,通常需要手动调整设置R、G或B的最大值。
是否有任何图像库(python、java、C#。)来获取、计算或设置 R、G 和 B 的最大值?
我查看了 PIL(python 图像库),但没有找到重点。
谢谢
【问题讨论】:
要获得最大红色、绿色、蓝色值,您可以使用 Python 库 SciPy:
from scipy import misc
img = misc.imread("lena.bmp")
print "R:", img[:, :, 0].max()
print "G:", img[:, :, 1].max()
print "B:", img[:, :, 2].max()
输出:
R: 255
G: 238
B: 255
要设置某个颜色通道的最大值,您可以将所有像素乘以一个比例因子,例如
factor = 240.0 / img[:, :, 0].max()
img[:, :, 0] *= factor
print "new R:", img[:, :, 0].max()
输出:
new R: 240
以防万一您需要同时设置最小值和最大值:
newMinR = 50.0
newMaxR = 240.0
factor = (newMaxR - newMinR) / (img[:, :, 0].max() - img[:, :, 0].min())
shift = newMinR - factor * img[:, :, 0].min()
img[:, :, 0] = factor * img[:, :, 0].astype('float') + shift
print "new R:", img[:, :, 0].min(), img[:, :, 0].max()
输出:
new R: 50 240
(计算factor 和shift 的公式可以从newR = factor * oldR + shift 之类的线性函数导出。确保使用浮点数而不是uint8!)
【讨论】:
0 是错误的。您仍然可以获得最大灰度值img[:, :].max() 或简单地img.max()。