【问题标题】:OpenCV Python how to keep one color as is converting an image to GrayscaleOpenCV Python如何保持一种颜色,就像将图像转换为灰度一样
【发布时间】:2020-12-09 10:07:00
【问题描述】:

如何使图像中的所有内容都是灰度的,除了橙色圆锥。使用opencv python。

【问题讨论】:

  • 你现在尝试了什么?
  • 你试过任何代码吗?可以的话可以发一下吗

标签: python image numpy opencv image-processing


【解决方案1】:

您可以通过使用bitwise_and() 函数和thresholding 来实现您的目标。 步骤:

  • 为所需区域生成mask。(这里使用thresholding,但也可以使用其他方法)
  • 使用bitwise_and(图像和蒙版)提取所需的regions
  • 添加masked regions获取输出。

这里是示例代码:

import cv2
import numpy as np

img = cv2.imread('input.jpg')

# creating mask using thresholding over `red` channel (use better use histogram to get threshoding value)
# I have used 200 as thershoding value it can be different for different images
ret, mask = cv2.threshold(img[:, :,2], 200, 255, cv2.THRESH_BINARY)

mask3 = np.zeros_like(img)
mask3[:, :, 0] = mask
mask3[:, :, 1] = mask
mask3[:, :, 2] = mask

# extracting `orange` region using `biteise_and`
orange = cv2.bitwise_and(img, mask3)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img  = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)

# extracting non-orange region
gray = cv2.bitwise_and(img, 255 - mask3)

# orange masked output
out = gray + orange

cv2.imwrite('orange.png', orange)
cv2.imwrite('gray.png', gray)
cv2.imwrite("output.png", out)

结果:

蒙版的橙色图像

蒙版的灰度图像

输出图像

【讨论】:

  • 嘿吉里什。试图理解。这可以动态化吗?例如,不仅要获取橙色的颜色,还要获取相同的随机 RGB 值?
  • @MarvinKweyu 取决于数据和用例基于形状的技术,如曲线拟合、轮廓搜索、形状匹配和其他基于学习的方法
猜你喜欢
  • 2021-12-12
  • 2013-01-12
  • 2015-10-07
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 2020-04-16
  • 1970-01-01
相关资源
最近更新 更多