【问题标题】:How to have an RGB value not go over the 255 limit in OpenCv?如何让 RGB 值不超过 OpenCv 中的 255 限制?
【发布时间】:2021-03-13 18:46:57
【问题描述】:

我想在蓝色值上加 100。但是在我的情况下,我希望在每个像素坐标处进行检查,以检查它是否超过 255 值,它保持在 255。

import numpy as np
import cv2

img = cv2.imread('cake.jpeg')

b,g,r = cv2.split(img)

if b.all() <= 155:
    b += 100

img = cv2.merge((b,g,r))

cv2.imwrite('edited cake.png', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意:为检查语句计算 255 - 100 = 155。

但是,if 语句似乎对防止 255 限制超出任何影响。

【问题讨论】:

  • 您根本不需要检查。 OpenCV用saturate计算加法:docs.opencv.org/master/d2/de8/…
  • 请不要使用标签opencv-python。根据标签描述,“此标签正在等待删除。请改用 [opencv] 和 [python] 标签。”

标签: python opencv


【解决方案1】:

你不需要检查,如果你使用 Python/OpenCV 添加。它为您进行剪辑。所以

b = cv2.add(b,100)

应该可以在不需要剪辑的情况下工作(并且速度非常快)。

或者,你可以这样做

b = (b+100).clip(0,255)

【讨论】:

    【解决方案2】:

    您正在使用 b.all(),如果 b 中的所有元素都 的 b 元素

    【讨论】:

    • 仅制作 (if b
    【解决方案3】:

    一种方法是将B通道的所有值加100,然后检查该值是否大于255设置255。

    b, g, r = cv2.split(img)
    
    b += 100
    b[b > 255] = 255
    
    img = cv2.merge((b,g,r))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多