阈值后温度为黑色

时间:2018-07-14 16:01:52

标签: opencv heatmap detection dlib image-thresholding

我想根据密度显示温度。

以下是Im使用的功能

def add_heat(heatmap, bbox_list):
    for i in range(len(bbox_list)):
        rect = trackers[i].get_position()

        heatmap[int(rect.left()):int(rect.top()), int(rect.right()):int(rect.bottom())] += 1
    return heatmap

def apply_threshold(heatmap, threshold):
    # Zero out pixels below the threshold
    heatmap[heatmap <= threshold] = 0
    # Return thresholded map

    cv2.imwrite("heatmap.png",heatmap)
    return heatmap
  1. add_heat函数将遍历跟踪器,并仅针对阈值调整那些特定区域上的热图。
  2. apply_threshold会将低于阈值的所有像素转换为零。

我这样称呼,

heat = np.zeros_like(frame[:, :, 0]).astype(np.float)
heat = add_heat(heat,trackers)
heat = apply_threshold(heat, 80)
heatmap = np.clip(heat, 0, 255)

trackers包含所有跟踪的坐标。但是,当我尝试显示最终结果时,它仍然是黑色的。我可以知道我在想什么吗?

1 个答案:

答案 0 :(得分:2)

似乎您的问题出在这里:

heatmap[int(rect.left()):int(rect.top()), int(rect.right()):int(rect.bottom())] += 1
return heatmap

假设您想将热图与skimage一起使用,您可能应该这样做:

heatmap[top_row:bottom_row, leftmost_column:rightmost_column]

在您的代码中它将如下所示:

heatmap[int(rect.bottom()):int(rect.top()), int(rect.left()):int(rect.right())] += 1
return heatmap

您可能想了解有关numpy数组的更多信息。 看到这个问题originated的位置后,我能够说出正在发生什么。