为了账号安全,请及时绑定邮箱和手机立即绑定

如何定义阈值以仅检测图像中的绿色对象:Opencv

如何定义阈值以仅检测图像中的绿色对象:Opencv

呼如林 2019-08-19 17:42:02
如何定义阈值以仅检测图像中的绿色对象:Opencv 我只是想从自然环境中捕获的图像中仅检测绿色物体。如何定义它?因为在这里我要通过阈值让我们说'x',通过使用这个x我想只获得一种颜色的绿色对象(白色)其他必须出现在另一种颜色(黑色)请指导我做这个。提前致谢。
查看完整描述

1 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

更新

我做了一个HSV色彩图。这是more easy and accurate使用这张地图找到颜色范围比以前。

也许我应该改变用途(40, 40,40) ~ (70, 255,255) in hsv来找到green

https://img1.sycdn.imooc.com//5d5a6f2c0001e39007200355.png


原始答案

  1. 转换为HSV色彩空间,

  2. 使用cv2.inRange(hsv, hsv_lower, hsv_higher)中获取绿色面具。

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


源图片:

https://img1.sycdn.imooc.com//5d5a6f300001161202750183.png

蒙面绿色区域:

https://img1.sycdn.imooc.com//5d5a6f320001747202750183.png

更多步骤:

https://img1.sycdn.imooc.com//5d5a6f340001f1fe11000183.png


核心源代码:

import cv2import numpy as np## Readimg = cv2.imread("sunflower.jpg")## convert to hsvhsv = 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 greenimask = mask>0green = np.zeros_like(img, np.uint8)green[imask] = img[imask]## save cv2.imwrite("green.png", green)


查看完整回答
反对 回复 2019-08-19
  • 1 回答
  • 0 关注
  • 1334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信