我想做类似于 levels function in Photoshop 的事情, 但找不到合适的 openCV 函数。
基本上,我想拉伸(stretch)图像中的灰色,使其从近乎白色变为几乎黑色,而不是从近乎白色变为略带灰色,同时让白色保持白色,黑色保持黑色(我使用的是灰度图像)。
最佳答案
以下 python 代码完全实现了 Photoshop 调整 -> 色阶对话框。
将每个 channel 的值更改为所需的值。
img
是np.uint8
类型的输入rgb图像。
inBlack = np.array([0, 0, 0], dtype=np.float32)
inWhite = np.array([255, 255, 255], dtype=np.float32)
inGamma = np.array([1.0, 1.0, 1.0], dtype=np.float32)
outBlack = np.array([0, 0, 0], dtype=np.float32)
outWhite = np.array([255, 255, 255], dtype=np.float32)
img = np.clip( (img - inBlack) / (inWhite - inBlack), 0, 255 )
img = ( img ** (1/inGamma) ) * (outWhite - outBlack) + outBlack
img = np.clip( img, 0, 255).astype(np.uint8)
关于opencv - OpenCV 中的颜色级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26912869/