首页 > 解决方案 > OpenCV Python如何保持一种颜色,就像将图像转换为灰度一样

问题描述

锥体的图像

我怎么做才能使图像中的所有内容都是灰度的,除了橙色圆锥。使用 opencv python。

标签: pythonimagenumpyopencvimage-processing

解决方案


您可以通过使用bitwise_and()函数和thresholding. 脚步:

  • mask为所需区域生成。(此处thresholding使用但也可以使用其他方法)
  • regions使用bitwise_and(图像和掩码)提取所需。
  • 添加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)

结果:

蒙面的橙色图像

蒙面的橙色图像

蒙版灰度图像

在此处输入图像描述

输出图像

在此处输入图像描述


推荐阅读