【问题标题】:Python opencv/cv2 mis-colorationsPython opencv/cv2 错误着色
【发布时间】:2018-05-02 21:52:36
【问题描述】:

示例图片:

我正在使用 OpenCV 在 Python 中开发一个项目,我需要稍微淡化图像的颜色以使其更暗。到目前为止一切都还不错,只是我在生成的图像中出现了奇怪的错误着色,其中大面积是白色或紫色或类似的。请参阅随附的示例。即使经过广泛的谷歌搜索,我也找不到任何解释。有什么想法可能导致这种情况吗?

我的代码如下所示:

poster = stbt.load_image("test1.png")
b, g, r = cv2.split(poster)
val = 40
b -= val
g -= val
r -= val
poster = cv2.merge((b, g, r))
cv2.imshow("frame2", poster)
cv2.waitKey(0)
cv2.destroyAllWindows()

【问题讨论】:

  • 看起来像下溢——我猜你减去没有饱和,但由于你没有显示你的代码,所以很难告诉你到底做错了什么。
  • 您应该使用伽马校正以避免错误着色。示例:https://www.pyimagesearch.com/2015/10/05/opencv-gamma-correction/
  • 请edit 你的问题,而不是在评论中发布未格式化的代码。
  • 抱歉:) 请查看代码和图片示例
  • 你总是可以使用来自 OpenCV 的subtract,它会为你做饱和,你可以传递一个标量......你不需要做拆分或合并。此外,您也可以尝试像@Mika72 的回答一样进行伽马校正

标签: python opencv cv2


【解决方案1】:

谢谢大家!我已经尝试了很多东西,包括上面的建议。我确实设法摆脱了错误着色,但仍然无法获得我想要的结果。但是我发现了这个https://pillow.readthedocs.io/en/3.0.x/index.html,它看起来应该可以为我解决问题。

编辑: 我测试了上述解决方案,效果很好:)。请参见下面的示例:

from PIL import Image, ImageEnhance

img = Image.open("dev/poster.png")
br = ImageEnhance.Brightness(img)
img = br.enhance(0.7)
img.show("")

【讨论】:

  • 你能分享一下解决方案吗?
猜你喜欢
  • 2019-02-28
  • 2016-11-28
  • 1970-01-01
  • 1970-01-01
  • 2018-05-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
相关资源
最近更新 更多