我正在使用带有 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 值的所有像素而不是特定像素值设置为另一个值吗?
使用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)
一些链接: