1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import numpy as np
- import cv2
- def draw_line_heatmap(image_shape, pt1, pt2, sigma=1):
- """
- 根据给定的两个端点生成线段的热度图。
- 参数:
- - image_shape: (height, width) 输出热度图的形状
- - pt1: (x1, y1) 线段的第一个端点
- - pt2: (x2, y2) 线段的第二个端点
- - sigma: 高斯核的标准差,用于控制热度扩散的程度
- 返回:
- - heatmap: 生成的热度图
- """
-
- heatmap = np.zeros(image_shape, dtype=np.float32)
-
- cv2.line(heatmap, pt1, pt2, color=1, thickness=1)
-
- if sigma > 0:
- heatmap = cv2.GaussianBlur(heatmap, (0, 0), sigmaX=sigma, sigmaY=sigma)
-
- heatmap = (heatmap - heatmap.min()) / (heatmap.max() - heatmap.min() + 1e-6)
- return heatmap
- if __name__ == "__main__":
-
- image_shape = (256, 256)
- pt1 = (50, 50)
- pt2 = (200, 200)
- sigma = 2
-
- heatmap = draw_line_heatmap(image_shape, pt1, pt2, sigma)
-
- import matplotlib.pyplot as plt
- plt.imshow(heatmap, cmap='hot', interpolation='nearest')
- plt.colorbar()
- plt.show()
|