【问题标题】:Filter out everything of a certain color using openCV使用openCV过滤掉某种颜色的所有东西
【发布时间】:2020-03-19 15:03:08
【问题描述】:

我有想要分类的建筑物的图片,我想摆脱天空,因为我认为它正在弄乱我的分类器。我知道 OpenCV 有一个名为 inRange 的函数,它接收图像并将不在您提供的两种颜色范围范围内的所有内容涂黑。我想知道是否有一个功能正好相反。或者另一种方式我可以完成我想要的。

谢谢!

【问题讨论】:

    标签: python-3.x opencv machine-learning


    【解决方案1】:

    cv2.InRange 创建一个遮罩,这基本上意味着它创建一个相同大小的图像,其中范围内的像素值为 255,范围外的值为 0。

    https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#void%20inRange(InputArray%20src,%20InputArray%20lowerb,%20InputArray%20upperb,%20OutputArray%20dst)

    如果你想得到相反的结果,你可以获取cv2.inRange 的输出并执行bitwise_not

    https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-not

    如果您想用它来遮盖原始图像中的像素,您可以使用bitwise_and:

    https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#bitwise-and

    所以我会这样做:

    mask = cv2.inRange(img, (255, 0, 0), (100, 0, 0)) # modify your thresholds
    inv_mask = cv2.bitwise_not(mask)
    no_sky = cv2.bitwise_and(img, inv_mask)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 2021-03-24
      • 1970-01-01
      • 2019-02-19
      • 2021-11-21
      相关资源
      最近更新 更多