OpenCV-Python:如何检测热图像中的热点?

OpenCV-Python: How to detect a hotspot in thermal image?

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

图像基本上是一台大型机器,我想获得图像中最热(就温度而言)的部分。
目前想到的:

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

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

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

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

编辑: 正如 Photon 的评论所述,目前我正在计算红色的直方图并使用它来设置阈值。
我希望进一步优化它,所以如果存在更有效的方法,请告诉我。 (这个过程应该很快。我可以在一定程度上牺牲准确性)

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