如何使用 opencv python 调整亮度、对比度和振动度?

新手上路,请多包涵

我是图像处理的新手。我在 Python3 中编程并使用 OpenCV 图像处理库。我想调整以下属性。

  1. 亮度
  2. 对比
  3. 活力
  4. 色调
  5. 饱和
  6. 亮度

对于 4、5、6。我正在使用以下代码转换为 HSV 空间。

 hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv)
h += value # 4
s += value # 5
v += value # 6
final_hsv = cv2.merge((h, s, v))
img = cv2.cvtColor(final_hsv, cv2.COLOR_HSV2BGR)

我为 1 和 2 找到的唯一教程就 在这里。本教程使用 C++,但我使用 Python 编程。另外,我不知道如何调整 3. vibrance。非常感谢您的帮助,谢谢!

原文由 Antonie Lin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 642
2 个回答

感谢@MarkSetchell 提供链接。简而言之,答案仅使用 numpy,公式如下所示。

new_image = (old_image) × (contrast/127 + 1) - 对比度 + 亮度

这里的 对比度亮度 是 [-127,127] 范围内的整数。标量 127 用于此范围。另外,下面是我使用的代码。

 brightness = 50
contrast = 30
img = np.int16(img)
img = img * (contrast/127+1) - contrast + brightness
img = np.clip(img, 0, 255)
img = np.uint8(img)

原文由 Antonie Lin 发布,翻译遵循 CC BY-SA 4.0 许可协议

一个简单的亮度调整方法,适用于 彩色单色 图像是

img = cv2.imread('your path',0)
brt = 40

img[img < 255-brt] += brt

cv2.imshow('img'+ img)

其中 brt 可以是增加亮度的正数或表示黑暗的负数。

以下链接是在此代码中处理的图像前后的链接,当 brt = 40 时:

输入图像

输出图像

原文由 husam i 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏