Python 如何定义仅检测图像中绿色对象的阈值:Opencv
我只想从自然环境中拍摄的图像中检测绿色物体。如何定义它?因为在这里我想通过阈值,比如说“x”,通过使用这个x,我只想得到一种颜色(白色)中的绿色物体,其他物体必须以另一种颜色(黑色)出现Python 如何定义仅检测图像中绿色对象的阈值:Opencv,python,opencv,image-processing,threshold,Python,Opencv,Image Processing,Threshold,我只想从自然环境中拍摄的图像中检测绿色物体。如何定义它?因为在这里我想通过阈值,比如说“x”,通过使用这个x,我只想得到一种颜色(白色)中的绿色物体,其他物体必须以另一种颜色(黑色)出现 请引导我做这件事。提前感谢。更新: 我制作了一张HSVcolormap。使用此贴图查找颜色范围比以前更容易、更准确 也许我应该改变hsv中的(40,40,40)~(70255255)来找到绿色的 原始答案: 转换到HSV颜色空间 使用cv2.inRange(hsv,hsv\u较低,hsv\u较高)获得绿色遮
请引导我做这件事。提前感谢。更新: 我制作了一张
HSV
colormap。使用此贴图查找颜色范围比以前更容易、更准确
也许我应该改变hsv中的(40,40,40)~(70255255)来找到绿色的
原始答案:
转换到HSV
颜色空间
使用cv2.inRange(hsv,hsv\u较低,hsv\u较高)
获得绿色遮罩李>
我们使用范围(在hsv中)
:(36,0,0)~(86255255)
用于该向日葵
源图像:
遮罩的绿色区域:
更多步骤:
核心源代码:
import cv2
import numpy as np
## Read
img = cv2.imread("sunflower.jpg")
## convert to hsv
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
## mask of green (36,25,25) ~ (86, 255,255)
# mask = cv2.inRange(hsv, (36, 25, 25), (86, 255,255))
mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255))
## slice the green
imask = mask>0
green = np.zeros_like(img, np.uint8)
green[imask] = img[imask]
## save
cv2.imwrite("green.png", green)
类似的:
美好的你想分享你的代码吗?因为我使用的是python opencv,所以我对bgr使用了hsv值,对下绿色区域使用了50100100,对上绿色区域使用了70255255,绿色的hsv值为60255255。但它不起作用,通过使用它,我只能得到纯黑色的图像。在我的情况下,我使用[36 0 0]
~[86 255 255]
@消音器谢谢,它对我有用为什么不呢?如果你查找地图,你会发现蓝色(HSV)
主要位于(110150,50)~(120255255)
。另一个问题是Android特有的,不是吗?这个问题被标记为python。