图像处理:ColorMap将灰度图像[0,1]区间上的像素值映射到RGB的[0,255]

1. 起因

在做人群计数时,常常使用密度图来估计人数。密度图中每个像素的值都是介于0和1之间的浮点数,原本是灰度图。但是使用python的matplotlib.pyplot并指定cmap参数可以画出伪彩色图。如果想用代码保存这种图片该怎么办呢?这里介绍一种方法。图像处理:ColorMap将灰度图像[0,1]区间上的像素值映射到RGB的[0,255]_第1张图片图像处理:ColorMap将灰度图像[0,1]区间上的像素值映射到RGB的[0,255]_第2张图片

2. 使用的工具

  • python
  • numpy
  • cv2

3. 方法

其实就是一个线性映射。

# labels是一个二维数组,是密度图
max_pixel = np.max(labels)
min_pixel = np.min(labels)
delta = max_pixel - min_pixel
labels_int = ((labels-min_pixel)/delta*255)
# 以下操作是为了反转jet的颜色,不然就会出现数值高的反而是蓝色,数值低的是红色,不像热力图了
labels_int = labels_int * (-1)
labels_int = labels_int + 255
labels_int = labels_int.astype(np.uint8)
color_label = cv2.applyColorMap(labels_int,cv2.COLORMAP_JET)

你可能感兴趣的:(图像处理,python,opencv,人工智能,开发语言)