当前位置: 首页 > 后端技术 > Python

分别使用PIL和cv2绘制人群密度图

时间:2023-03-26 01:15:52 Python

pred变量为网络输出的单通道密度图。绘制密度图时,需要转换成cpu支持的numpy格式。1.使用PIL绘制importmatplotlib.pyplotaspltplt.imshow(pred,cmap=plt.cm.jet)plt.show()这种绘制方法会有自己的坐标系,这个坐标系会占用真实的像素点图片,导致输出密度图的大小与输入图像的大小不一致。但如果只是想查看密度效果,还是推荐使用这种方法。2.使用cv2绘制importcv2heatmapshow=Noneheatmapshow=cv2.normalize(pred,heatmapshow,alpha=0,beta=255,norm_type=cv2.NORM_MINMAX,dtype=cv2.CV_8U)heatmapshow=cv2.applyColorMap(heatmapshow,cv2.COLORMAP_JET)cv2.imshow("Heatmap",heatmapshow)cv2.waitKey(0)我们知道网络输出的pred矩阵中的值很小,都是np.float64的浮点数,而cv2处理的是[0,255]区间的数字,所以如果直接用cv2显示或者保存,会是一张暗图。在plt.imshow内部,其实是对pred进行了归一化处理,然后应用colormapping来呈现热图的效果。所以需要在cv2中做这两步:归一化(cv2.normalize)和颜色映射(applyColorMap)plt.imshow中的cmap参数相当于cv2.applyColorMap中的cv2.COLORMAP_JET参数,用于指定颜色.参考:https://blog.csdn.net/hxydip/...