知识点

假设我们想在地图上显示美国不同地区的温度。我们可以用不同的颜色代表不同的意思。用蓝色表示较冷的温度,用红色表示较温暖的温度。温度数据只是一个例子,但还有其他几个数据是单值(灰度)的情况,但将其转换为彩色数据以实现可视化是有意义的。用伪彩色更好地显示数据的其他例子是高度、压力、密度、湿度等等。

Look Up Table(LUT)查找表
applyColorMap(src, dst, COLORMAP)

  • src 表示输入图像
  • dst 表示输出图像
  • OpenCV 支持多种颜色风格的查找表映射

image.png

C++代码

  1. enum cv::ColormapTypes {
  2. cv::COLORMAP_AUTUMN = 0,
  3. cv::COLORMAP_BONE = 1,
  4. cv::COLORMAP_JET = 2,
  5. cv::COLORMAP_WINTER = 3,
  6. cv::COLORMAP_RAINBOW = 4,
  7. cv::COLORMAP_OCEAN = 5,
  8. cv::COLORMAP_SUMMER = 6,
  9. cv::COLORMAP_SPRING = 7,
  10. cv::COLORMAP_COOL = 8,
  11. cv::COLORMAP_HSV = 9,
  12. cv::COLORMAP_PINK = 10,
  13. cv::COLORMAP_HOT = 11,
  14. cv::COLORMAP_PARULA = 12,
  15. cv::COLORMAP_MAGMA = 13,
  16. cv::COLORMAP_INFERNO = 14,
  17. cv::COLORMAP_PLASMA = 15,
  18. cv::COLORMAP_VIRIDIS = 16,
  19. cv::COLORMAP_CIVIDIS = 17,
  20. cv::COLORMAP_TWILIGHT = 18,
  21. cv::COLORMAP_TWILIGHT_SHIFTED = 19,
  22. cv::COLORMAP_TURBO = 20,
  23. cv::COLORMAP_DEEPGREEN = 21
  24. }
  25. #include <opencv2/opencv.hpp>
  26. #include <iostream>
  27. using namespace std;
  28. using namespace cv;
  29. void day06() {
  30. Mat src = imread("E:\\_Image\\OpenCVTest\\girl.jpg");
  31. if (src.empty()) {
  32. cout << "could not load image.." << endl;
  33. return;
  34. }
  35. Mat dst;
  36. applyColorMap(src, dst, COLORMAP_PINK);
  37. imshow("colorMap", dst);
  38. waitKey(0);
  39. }

Python代码

  1. import cv2 as cv
  2. # 查看版本
  3. print(cv.__version__)
  4. # 读取图像
  5. src = cv.imread("E:/_Image/OpenCVTest/girl.jpg")
  6. cv.imshow("input", src)
  7. # COLORMAP_AUTUMN = 0
  8. # COLORMAP_BONE = 1
  9. # COLORMAP_COOL = 8
  10. # COLORMAP_HOT = 11 还行
  11. # COLORMAP_HSV = 9
  12. # COLORMAP_JET = 2
  13. # COLORMAP_OCEAN = 5
  14. # COLORMAP_PARULA = 12
  15. # COLORMAP_PINK = 10 好看
  16. # COLORMAP_RAINBOW = 4
  17. # COLORMAP_SPRING = 7
  18. # COLORMAP_SUMMER = 6 还行
  19. # COLORMAP_WINTER = 3
  20. dst = cv.applyColorMap(src, cv.COLORMAP_SUMMER)
  21. cv.imshow("output", dst)
  22. # 等待键盘输入 释放内存
  23. cv.waitKey(0)
  24. cv.destroyAllWindows()

Javascript代码

很遗憾的是,opencv.js 好像没有提供 applyColorMap 函数的支持,我在 4.5.0 的版本中并没有找到这个方法。如果有读者朋友找到了这个方法,欢迎给我留言呀~

结果展示
image.png