python - 如何使用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 值的所有像素而不是特定像素值设置为另一个值吗?
解决方案
用于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)
一些链接:
推荐阅读
- android - Android和iOS上的图片大小差异问题
- python - 是否有可能在数据之后创建 ylim 只显示数字?
- javascript - API 调用需要很长时间(数据集 250.000 条记录)
- django - 如何使用 slug 通过多对多类“objects.filter”检索数据
- blockchain - 不能使用后备。什么都没发生!函数()外部应付{}
- android - 我应该将 cityName 添加到具有 4 个片段的导航组件中的 Bundle 多少次?
- api - 用于图像上传的 Rest Assured multipart/Form-Data 中的 API 出现错误,因为上传的图像不是 jpg/jpeg 或 png 类型“
- apache-spark - Spark 虽然分区号为 1 却生成了很多任务 Pyspark
- python - pybind11 内存泄漏和崩溃
- c# - 记录加载 *.dtsx 文件的结果