opencv - OpenCV 中的颜色级别

标签 opencv

我想做类似于 levels function in Photoshop 的事情, 但找不到合适的 openCV 函数。

基本上,我想拉伸(stretch)图像中的灰色,使其从近乎白色变为几乎黑色,而不是从近乎白色变为略带灰色,同时让白色保持白色,黑色保持黑色(我使用的是灰度图像)。

最佳答案

以下 python 代码完全实现了 Photoshop 调整 -> 色阶对话框。

将每个 channel 的值更改为所需的值。

imgnp.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/

相关文章:

python - 轮廓中的质心(Python、OpenCV)

c++ - OpenCV:使用 drawContours() 断言失败

opencv - 使用 ARM NEON 的快速高斯模糊图像滤波器

python - 查找在OpenCV Python中屏幕上是否可见绘制的矩形

image-processing - OpenCV:获取图像的颜色、强度和纹理

c - fgets/scanf 读取文件没有给出任何值

OpenCV-将mat图像类型从CV_8UC4转换为CV_16UC3

c++ - 我如何访问 OpenCV 中的高维矩阵元素?

c++ - 多幅图像实时SIFT描述符匹配C++/OpenCV

visual-studio-2010 - 我无法使用 VS2010 运行 openCV2.3.1