【问题标题】:OpenCV-Python: How to detect a hotspot in thermal image?OpenCV-Python:如何检测热图像中的热点?
【发布时间】:2016-07-12 05:40:11
【问题描述】:

我正在使用 openCV 和 Python 制作一个计算机视觉应用程序,用于检测热像仪图像中的热点。

图像基本上是一台大型机械,我想获得图像中最热(就温度而言)的部分。
到现在为止我的想法:

  1. 使用颜色量化(和 K-means)将颜色数量减少到 8 种。
  2. 使用某种阈值并获得红色最多的集群(因为通常红色=更多热量)。

现在我已经成功完成了第一部分。我有一个仅包含 8 种颜色的量化图像。
到目前为止,我所做的所有阈值处理都需要我自己设置颜色范围(即使用cv2.inRange 函数创建一个桅杆,然后使用cv2.bitwiseAND 将蒙版应用于图像)。但在这里我希望它是动态的,以便它获得最热门的部分。即即使红色很少,它也应该让我得到最红色的区域。

那么有什么方法可以做到这一点?

(另外,这里的“热点”是指实际的热点。即温度最高的点。)

编辑: 正如Photon 的评论所提到的,目前我正在计算红色的直方图并使用它来设置阈值。
我正在寻求进一步优化这一点,所以让我知道是否存在任何更有效的方法。 (这个过程应该很快。我可以在一定程度上妥协准确性)

【问题讨论】:

  • 计算红色的直方图,并根据相对位置选择阈值(例如> 90%的总数)
  • 这就是我最终所做的。我也在看分水岭,但在 OpenCV 2.x 中实现它时遇到了麻烦
  • @Photon,把你的评论作为答案,这样我可以接受吗?

标签: python opencv computer-vision cluster-analysis


【解决方案1】:

为了动态估计阈值,您需要查看数据的分布。为此,您需要计算红色的直方图。 然后,找到一个阈值,使得一定百分比的像素低于它。例如 90%。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-11
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 2020-04-16
    • 2017-06-13
    相关资源
    最近更新 更多