python - 如何使用opencv python将RGB颜色范围更改为红色
问题描述
从这个stackoverflow问题我找到了这段代码
import numpy as np
import imutils
import cv2
img_rgb = cv2.imread('black.png')
Conv_hsv_Gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(Conv_hsv_Gray, 0, 255,cv2.THRESH_BINARY_INV |cv2.THRESH_OTSU)
img_rgb[mask == 255] = [0, 0, 255]
cv2.imshow("imgOriginal", img_rgb) # show windows
cv2.imshow("mask", mask) # show windows
cv2.waitKey(0)
有什么办法可以换行吗
img_rgb[mask == 255] = [0, 0, 255]
或者其他什么让它改变一系列颜色?例如:
([255, 255, 0], [255, 55, 10])
解决方案
是的你可以。
首先,您必须创建要更改的颜色范围的蒙版,答案是OpenCV 的 inRange 函数。
然后,通过 numpy,您可以说出蒙版不是 0 的位置,将它们涂成红色。这是代码:
import numpy as np
import cv2
# load image and set the bounds
img = cv2.imread("D:\\debug\\HLS.png")
lower =(255, 55, 0) # lower bound for each channel
upper = (255, 255, 10) # upper bound for each channel
# create the mask and use it to change the colors
mask = cv2.inRange(img, lower, upper)
img[mask != 0] = [0,0,255]
# display it
cv2.imshow("frame", img)
cv2.waitKey(0)
如果您实际上想要获得一系列颜色(例如所有蓝色),最好使用 HLS 或 HSV 颜色空间。
推荐阅读
- google-cloud-storage - 在作业执行之前过滤 GCS uri
- node.js - 当已经桥接到另一个端点时,以编程方式在 FreeSWITCH 节点-esl 服务器内转移呼叫
- javascript - 在 Web Worker 脚本中使用 ActiveX 控制
- javascript - 以编程方式创建 Cognito 身份池 - AccessDeniedException
- c# - WPF Material Design 按钮悬停
- python - 计算Python中json列的特定字符
- javascript - ReactJS 在多个表之间拖放
- nginx - 当 CI 项目位于子目录中时,如何从 CI 项目 url 中删除 index、php 以在 nginx Hostwinds 服务器中创建干净的 url?
- excel - 在 Excel 中计算变量范围内的行数
- dll - 如何检测 CAD dwg/dxf 文件是 2D 还是 3D?