关于python:分别使用-PIL-和-cv2-绘制人群密度图

44次阅读

共计 736 个字符,预计需要花费 2 分钟才能阅读完成。

pred 变量是网络输入的单通道密度图。在绘制密度图时须要将其转化为 cpu 所反对的 numpy 格局。

1. 应用 PIL 绘制

import matplotlib.pyplot as plt
plt.imshow(pred, cmap=plt.cm.jet)
plt.show()

这种绘制办法会自带坐标系,而这个坐标系会占用图片的实在像素点,导致输入的密度图尺寸与输出图片的尺寸不统一。但如果只是查看密度成果,这个办法还是很举荐的。

2. 应用 cv2 绘制

import cv2
heatmapshow = None
heatmapshow = 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/…

正文完
 0