【问题标题】:how to detect clouds in image using opencv python如何使用opencv python检测图像中的云
【发布时间】:2017-11-14 10:30:55
【问题描述】:

我正在开发一个在 python 中使用 opencv 的项目,我想在其中检测图像中的云。我已经尝试了很多东西,但我被卡住了。我找不到 hsv 颜色空间的云颜色值的确切范围。这是我尝试过的代码。以下代码检测到一些云,但不是全部。这是代码。我还附上了一张我从这段代码中获得的图像。

import cv2
import numpy as np

img = cv2.imread('E:/sky.jpg', 1)
hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

white = np.array([255, 255, 255])
lowerBound = np.array([30,30,30])

mask = cv2.inRange(hsv, lowerBound, white)

res = cv2.bitwise_and(img, img, mask=mask)
cv2.imwrite("E:/clouds.jpg",res)

cv2.imshow("mywindow",res)

cv2.waitKey(0)

【问题讨论】:

  • 您在 HSV 颜色空间中为白色分配了 [255,255,255] 的值? HSV 不是 RGB
  • 如果我将 [255,255,255] 更改为 [0,0,100] 这是 [255,255,255] 的 hsv,那么它会全部变黑。图像变成全黑..我的代码有什么问题吗?
  • "如果我改变..." 你是否在盲目地尝试数字组合? [30,30,30] 来自哪里?它在 HSV 中代表什么颜色(记住你不是 RGB)
  • [30,30,30] 在 HSV 中是一种深绿色,与你的天空或云彩颜色无关

标签: python opencv


【解决方案1】:

尽量不要将图像更改为 HSV 颜色空间。 删除行

hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

其余代码清楚地表明您正在使用基于 RGB 颜色的方案,但您不知道 HSV 是什么。坦率地说,我认为您首先不需要使用 HSV 色彩空间。甚至可以使用灰度图像表示来完成。

【讨论】:

  • 现在我知道我正在使用 RGB,但现在我不知道云的颜色范围。我搜索了很多,但找不到用于检测云的 hsv 值。
  • 并且通过删除将图像从 BGR 转换为 HSV 的代码行并没有给我想要的结果
  • 那你应该去研究一下函数名adaptivethreshold
猜你喜欢
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 1970-01-01
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 2017-10-19
相关资源
最近更新 更多