cv2伪彩色applyColorMap()函数


本文主要介绍cv2模块中的伪彩色applyColorMap()函数。

引用自:https://blog.csdn.net/u013381011/article/details/78341861

colormap(色度图)
假设我们想在地图上显示美国不同地区的温度。我们可以把美国地图上的温度数据叠加为灰度图像——较暗的区域代表较冷的温度,更明亮的区域代表较热的区域。这样的表现不仅令人难以置信,而且代表了两个重要的原因。首先,人类视觉系统没有被优化来测量灰度强度的微小变化。我们能更好地感知颜色的变化。第二,我们用不同的颜色代表不同的意思。用蓝色和较温暖的温度用红色表示较冷的温度更有意义。
温度数据只是一个例子,但还有其他几个数据是单值(灰度)的情况,但将其转换为彩色数据以实现可视化是有意义的。用伪彩色更好地显示数据的其他例子是高度、压力、密度、湿度等等。
在OpenCV中使用applycolormap(伪彩色函数)
OpenCV的定义12种colormap(色度图),可以应用于灰度图像,使用函数applycolormap产生伪彩色图像。让我们很快看到如何将色度图的一种模式colormap_jet应用到一幅图像中。

下面是示例代码:

import cv2
import numpy as np

def colormap_name(id):
    switcher = {
       0 : "COLORMAP_AUTUMN",
        1 : "COLORMAP_BONE",
        2 : "COLORMAP_JET",
        3 : "COLORMAP_WINTER",
        4 : "COLORMAP_RAINBOW",
        5 : "COLORMAP_OCEAN",
        6 : "COLORMAP_SUMMER",
        7 : "COLORMAP_SPRING",
        8 : "COLORMAP_COOL",
        9 : "COLORMAP_HSV",
        10: "COLORMAP_PINK",
        11: "COLORMAP_HOT" 
    }
    return switcher.get(id, 'NONE')

img = cv2.imread('./pluto.jpg', cv2.IMREAD_GRAYSCALE)
im_out = np.zeros((600, 800, 3), np.uint8)

for i in range(0, 4):
    for j in range(0, 3):
        k = i + j * 4
        im_color = cv2.applyColorMap(img, k)
        cv2.putText(im_color, colormap_name(k), (30, 180),
                   cv2.FONT_HERSHEY_DUPLEX, 0.5, (255, 255, 255),1)
        ix200 = i * 200
        jx200 = j * 200
        im_out[jx200: jx200 + 200, ix200: ix200 + 200, :] = im_color

cv2.imwrite('result.jpg', im_out)

cv2.imshow('result', im_out)
cv2.waitKey(0)
cv2.destroyAllWindows()

测试图片:

测试结果: