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

Cha*_*ist 5 python opencv cluster-analysis computer-vision

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

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

  1. 使用颜色量化(和K均值)将颜色数量减少到8。
  2. 使用某种阈值设置,使群集中的红色数量最多(因为通常红色=更多热量)。

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

那么,这样做的方法是什么呢?

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

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

Pho*_*ton 3

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