如何在C中调整OpenCV中的对比度?

eds*_*lp1 6 c opencv contrast

我只是尝试调整灰度图像中的对比度/亮度,用C中的Opencv突出显示该图像中的白色.我该怎么做?是否有任何功能在opencv中执行此任务?

原始图片:

在此输入图像描述

修改后的图片

在此输入图像描述

提前致谢!

Abi*_*n K 10

我想你可以通过两种方式调整对比度:

1)直方图均衡:

但是当我用你的图像尝试这个时,结果并不像你预期的那样.请查看以下内容:

在此输入图像描述

2)阈值处理:

在这里,我将输入的每个像素值与任意值(我拍摄127)进行比较.下面是在opencv中具有内置功能的逻辑.But remember, output is Binary image, not grayscale as you did.

If (input pixel value >= 127):
    ouput pixel value = 255
else:
    output pixel value = 0
Run Code Online (Sandbox Code Playgroud)

以下是我得到的结果:

在此输入图像描述

为此,您可以使用阈值功能比较功能

3)如果您必须将灰度图像作为输出,请执行以下操作:

(代码在OpenCV-Python中,但对于每个函数,opencv.itseez.com中提供了相应的C函数)

for each pixel in image:
   if pixel value >= 127: add 'x' to pixel value.
   else : subtract 'x' from pixel value. 
Run Code Online (Sandbox Code Playgroud)

('x'是任意值.)因此,亮像素和暗像素之间的差异增大.

img = cv2.imread('brain.jpg',0)

bigmask = cv2.compare(img,np.uint8([127]),cv2.CMP_GE)
smallmask = cv2.bitwise_not(bigmask)

x = np.uint8([90])
big = cv2.add(img,x,mask = bigmask)
small = cv2.subtract(img,x,mask = smallmask)
res = cv2.add(big,small)
Run Code Online (Sandbox Code Playgroud)

以下是获得的结果:

在此输入图像描述

  • 其中没有解决问题,即如何调整对比度 (10认同)
  • 我们应该改变OP的问题,以避免导致这种情况的搜索. (4认同)
  • 确实,问题标题是"如何调整对比度".但他想要做的是突出图像中的白色部分.所以无论我有什么知识,我都会回答这个问题.当然,在评论中,OP告诉一种方法对他来说是完美的.所以我认为它解决了问题.考虑到标题,你可能是对的.:) (2认同)

Nic*_*ews 10

您还可以查看OpenCV CLAHE算法.它不是全局均衡直方图,而是将图像分割成图块并在局部均衡,然后将它们拼接在一起.这可以提供更好的结果.

使用OpenCV 3.0.0中的图像:

import cv2
inp = cv2.imread('inp.jpg',0)
clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8))
res = clahe.apply(inp)
cv2.imwrite('res.jpg', res)
Run Code Online (Sandbox Code Playgroud)

给了一些相当不错的东西

在CLAHE之后

在这里阅读更多相关内容,虽然它不是非常有用:http: //docs.opencv.org/3.1.0/d5/daf/tutorial_py_histogram_equalization.html#gsc.tab=0