如何使用python将一系列HSV值的所有像素设置为openCV中的另一个值?

Ahm*_* 阿德 2 python opencv

我正在使用带有 python 的 OpenCV。我想用“白色”颜色替换颜色范围。

颜色范围:

HMin = 130
SMin = 65
VMin = 135
HMax = 200
SMax = 160
VMax = 255
Run Code Online (Sandbox Code Playgroud)

我知道如何将特定像素值替换为另一个值:

im[np.where((im == [20,78,90]).all(axis = 2))] = [0,0,100]
cv2.imwrite('output.png', im)
Run Code Online (Sandbox Code Playgroud)

那么,您知道我如何使用这种方法将一系列HSV 值的所有像素而不是特定像素值设置为另一个值吗?

Kin*_*t 金 6

使用inRange发现面膜,然后用其他值替换来源国形象。

以下是将 GREEN 范围替换为 RED。

在此处输入图片说明

import numpy as np
import cv2

img = cv2.imread( "sunflower.jpg" )

## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

## mask of green (36,0,0) ~ (70, 255,255)
mask = cv2.inRange(hsv, (36, 0, 0), (70, 255,255))
bak = img.copy()

# replace with red 
bak[mask > 0] = (0, 0, 255)

cv2.imwrite("bak.png", bak)
Run Code Online (Sandbox Code Playgroud)

一些链接:

  1. 如何定义阈值以仅检测图像中的绿色对象:Opencv

  2. 当像素 hsv 值在特定范围内时如何更改图像颜色?