首页 > 解决方案 > 如何使用python将一系列HSV值的所有像素设置为openCV中的另一个值?

问题描述

我正在将 OpenCV 与 python 一起使用。我想用“白色”颜色替换颜色范围。

颜色范围:

HMin = 130
SMin = 65
VMin = 135
HMax = 200
SMax = 160
VMax = 255

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

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

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

标签: pythonopencv

解决方案


用于inRange查找蒙版,然后将原始图像替换为其他值。

以下是将绿色范围替换为红色。

在此处输入图像描述

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)

一些链接:

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

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


推荐阅读