知识点
假设我们想在地图上显示美国不同地区的温度。我们可以用不同的颜色代表不同的意思。用蓝色表示较冷的温度,用红色表示较温暖的温度。温度数据只是一个例子,但还有其他几个数据是单值(灰度)的情况,但将其转换为彩色数据以实现可视化是有意义的。用伪彩色更好地显示数据的其他例子是高度、压力、密度、湿度等等。
Look Up Table(LUT)查找表
applyColorMap(src, dst, COLORMAP)
- src 表示输入图像
- dst 表示输出图像
- OpenCV 支持多种颜色风格的查找表映射

C++代码
enum cv::ColormapTypes {cv::COLORMAP_AUTUMN = 0,cv::COLORMAP_BONE = 1,cv::COLORMAP_JET = 2,cv::COLORMAP_WINTER = 3,cv::COLORMAP_RAINBOW = 4,cv::COLORMAP_OCEAN = 5,cv::COLORMAP_SUMMER = 6,cv::COLORMAP_SPRING = 7,cv::COLORMAP_COOL = 8,cv::COLORMAP_HSV = 9,cv::COLORMAP_PINK = 10,cv::COLORMAP_HOT = 11,cv::COLORMAP_PARULA = 12,cv::COLORMAP_MAGMA = 13,cv::COLORMAP_INFERNO = 14,cv::COLORMAP_PLASMA = 15,cv::COLORMAP_VIRIDIS = 16,cv::COLORMAP_CIVIDIS = 17,cv::COLORMAP_TWILIGHT = 18,cv::COLORMAP_TWILIGHT_SHIFTED = 19,cv::COLORMAP_TURBO = 20,cv::COLORMAP_DEEPGREEN = 21}#include <opencv2/opencv.hpp>#include <iostream>using namespace std;using namespace cv;void day06() {Mat src = imread("E:\\_Image\\OpenCVTest\\girl.jpg");if (src.empty()) {cout << "could not load image.." << endl;return;}Mat dst;applyColorMap(src, dst, COLORMAP_PINK);imshow("colorMap", dst);waitKey(0);}
Python代码
import cv2 as cv# 查看版本print(cv.__version__)# 读取图像src = cv.imread("E:/_Image/OpenCVTest/girl.jpg")cv.imshow("input", src)# COLORMAP_AUTUMN = 0# COLORMAP_BONE = 1# COLORMAP_COOL = 8# COLORMAP_HOT = 11 还行# COLORMAP_HSV = 9# COLORMAP_JET = 2# COLORMAP_OCEAN = 5# COLORMAP_PARULA = 12# COLORMAP_PINK = 10 好看# COLORMAP_RAINBOW = 4# COLORMAP_SPRING = 7# COLORMAP_SUMMER = 6 还行# COLORMAP_WINTER = 3dst = cv.applyColorMap(src, cv.COLORMAP_SUMMER)cv.imshow("output", dst)# 等待键盘输入 释放内存cv.waitKey(0)cv.destroyAllWindows()
Javascript代码
很遗憾的是,opencv.js 好像没有提供 applyColorMap 函数的支持,我在 4.5.0 的版本中并没有找到这个方法。如果有读者朋友找到了这个方法,欢迎给我留言呀~
结果展示
