我有一组像素值,希望将其作为热图映射到图像上。我的像素值看起来像这样:它们是任意分辨率的图像像素的x,y坐标。
pixel values = [[1,1],[2,1],[3,1],[4,1],[2,1]]
我曾经尝试过使用OpenCV,但是我不明白如何使它正常工作。我假设需要生成概率/密度分布,或者绘图功能可以自动执行此操作?由于图像是使用OpenCV加载的,因此我一直在寻找OpenCV函数,如果Matplotlib可以工作,请发表评论。
heatmap_array = np.array(heatmap)
cv_colormap = cv2.applyColorMap(heatmap_array[0:], cv2.COLORMAP_HOT)
cv2.imwrite("colormap_gen.jpg", cv_colormap)
在原始图像的顶部,热图需要稍微不透明。
答案 0 :(得分:1)
您可以尝试使用Matplotlib:
# sample data
# xy can be np.array(pixel_values)
np.random.seed(1)
xy = np.random.multivariate_normal([300,300], [[2000,400],[400,1000]], 2000000)
# compute the hist
# bins here are the size of the image
hist,_,_ = np.histogram2d(xy[:,0], xy[:,1], bins=(600,800))
# show heatmap by plt
# you can use plt to save the figure
fig = plt.figure(figsize=(12,8))
plt.imshow(hist,cmap='hot')
plt.axis('off')
plt.show()
输出: