【问题标题】:Intensify or increase Saturation of an image增强或增加图像的饱和度
【发布时间】:2019-02-06 00:14:01
【问题描述】:

用 Python 编码。我有以下图像,我将其分类为制作,因此仅发现具有其原始颜色的图像。有什么方法可以增强像素颜色(将绿色...变绿)?

目标是这样的:

img = cv2.imread("/Volumes/EXTERNAL/ClassifierImageSets/Origional_2.png",1)
mask = cv2.imread("/Users/chrisradford/Documents/School/Masters/RA/Classifier/Python/mask.png",0)

result = cv2.bitwise_and(img,img,mask=mask)

【问题讨论】:

  • 有没有试过改成HSV命名空间,增加S通道?
  • @api55 我有,但它只影响背景颜色

标签: python opencv colors


【解决方案1】:

我将其转换为 HSV 色彩空间,并将 S 通道值增加到最大值以获取“绿色”值。

使用此代码:

import cv2

img = cv2.imread("D:\\testing\\test.png",1)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
greenMask = cv2.inRange(hsv, (26, 10, 30), (97, 100, 255))

hsv[:,:,1] = greenMask 


back = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)

cv2.imshow('test', back)
cv2.waitKey(0)
cv2.destroyAllWindows()

如果你愿意,你可以像这样给它加上纯绿色:

使用此代码:

import cv2

img = cv2.imread("D:\\testing\\test.png",1)

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
greenMask = cv2.inRange(hsv, (26, 10, 30), (97, 100, 255))

img[greenMask == 255] = (0, 255, 0)

cv2.imshow('test', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

好像南方的小东西有一部分也是绿的(或者说够绿了)。

希望对你有帮助。

【讨论】:

  • 非常感谢。我对您实际将饱和度增加到最大值的位置感到困惑。我相信是这一行但不明白:hsv[:,:,1] = greenMask
  • 即numpy切片,它取所有y值、所有x值和第二个通道。然后我在greenMask中分配具有相同坐标的值。绿色部分应为 255,其他部分应为 0。
猜你喜欢
  • 1970-01-01
  • 2012-11-28
  • 2015-12-24
  • 2011-05-07
  • 2014-05-30
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多