【问题标题】:How to mask certain colors on an image with OpenCV如何使用 OpenCV 屏蔽图像上的某些颜色
【发布时间】:2021-09-25 11:21:48
【问题描述】:

我正在使用 OpenCV 处理这种图像:

我有一个包含不同颜色的 numpy 数组,假设我考虑用 BGR 编写的这种颜色:[65 71 72] 我想从我的图像中去除这种颜色,在这种颜色之后留下黑色空间。据我所知,我必须将图像转换为灰度,然后在蒙版中应用蒙版但我说颜色的上下边界是什么,而我知道这个或任何颜色的边界是什么,以及什么是这种颜色的灰度表示。我阅读了许多不同的阈值技术,但所有示例都处理像(255 0 0) 这样的颜色。

【问题讨论】:

标签: python opencv image-processing


【解决方案1】:

您可以将 OpenCV 中的inRange 直接应用于 BGR 颜色空间以减去所需的颜色:

import numpy as np
import cv2

img = np.array([ 
    [[1, 2, 3], [2, 3, 1], [3, 1, 2]], 
    [[4, 5, 6], [65 71 72], [6, 4, 5]], 
    [[7, 8, 9], [8, 9, 7], [9, 7, 8]]], dtype=np.uint8)

lower = np.array([65 71 72])
upper = np.array([65 71 72])

mask = cv2.inRange(img, lower, upper)

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

result = img - masked

【讨论】:

  • 很抱歉,但我现在看到此操作后的差异。也许您可以尝试下载我的图像并检查此方法
  • 你应该调查代码并理解它。更改它以适合您将很少有麻烦。
猜你喜欢
  • 2014-09-24
  • 2014-11-17
  • 1970-01-01
  • 2021-12-07
  • 2019-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多