本文主要介绍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()
测试图片:
测试结果: