如何定义阈值以仅检测图像中的绿色对象:Opencv [重复]
image-processing
opencv
python
27
0

我只想从自然环境下拍摄的图像中检测出绿色物体,如何定义?因为在这里我要传递阈值,所以我们说“ x”,通过使用此x,我只想将绿色物体变成一种颜色(白色),而其他物体必须以另一种颜色(黑色)出现,请指导我做这个。提前致谢。

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

更新

我制作了HSV颜色图。使用此映射表查找颜色范围比以前more easy and accurate

也许我应该(40, 40,40) ~ (70, 255,255) in hsv更改use (40, 40,40) ~ (70, 255,255) in hsv来找到green

在此处输入图片说明


原始答案

  1. 转换为HSV颜色空间,
  2. 使用cv2.inRange(hsv, hsv_lower, hsv_higher)获取绿色蒙版。

我们使用此sunflower the range (in hsv) :( (36,0,0) ~ (86,255,255)


源图像:

在此处输入图片说明

遮罩的绿色区域:

在此处输入图片说明

更多步骤:

在此处输入图片说明


核心源代码:

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)

类似:

  1. 选择正确的HSV上下边界以使用`cv :: inRange`(OpenCV)进行颜色检测
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号