pred变量是网络输入的单通道密度图。在绘制密度图时须要将其转化为cpu所反对的numpy格局。
1. 应用PIL绘制
import matplotlib.pyplot as pltplt.imshow(pred, cmap=plt.cm.jet)plt.show()
这种绘制办法会自带坐标系,而这个坐标系会占用图片的实在像素点,导致输入的密度图尺寸与输出图片的尺寸不统一。但如果只是查看密度成果,这个办法还是很举荐的。
2. 应用cv2绘制
import cv2heatmapshow = 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做了归一化操作而后利用了色调映射能力出现热力求的成果。
所以在cv2中也须要做这两步才行:归一(cv2.normalize)和色调映射(applyColorMap)
plt.imshow外面的cmap参数等价于cv2.applyColorMap外面的cv2.COLORMAP_JET参数,用于指定色调。
参考:
https://blog.csdn.net/hxydip/...