一、知识点
1、void applyColorMap(InputArray src, OutputArray dst, int colormap);
(1)、通过给定的颜色映射表,将灰度图像或伪彩色图像转换为全彩色图像。
(2)、参数说明:
src: 源图像,灰度或彩色,类型为CV_8UC1或CV_8UC3。 如果是CV_8UC3,则使用cv::COLOR_BGR2GRAY在内部生成CV_8UC1图像。
dst: 给源图像做颜色映射后的结果图像。
colormap: 颜色映射需要的enum类型,具体见(3)。
(3)、
enum ColormapTypes
{
COLORMAP_AUTUMN = 0, //!< 
COLORMAP_BONE = 1, //!< 
COLORMAP_JET = 2, //!< 
COLORMAP_WINTER = 3, //!< 
COLORMAP_RAINBOW = 4, //!< 
COLORMAP_OCEAN = 5, //!< 
COLORMAP_SUMMER = 6, //!< 
COLORMAP_SPRING = 7, //!< 
COLORMAP_COOL = 8, //!< 
COLORMAP_HSV = 9, //!< 
COLORMAP_PINK = 10, //!< 
COLORMAP_HOT = 11, //!< 
COLORMAP_PARULA = 12, //!< 
COLORMAP_MAGMA = 13, //!< 
COLORMAP_INFERNO = 14, //!< 
COLORMAP_PLASMA = 15, //!< 
COLORMAP_VIRIDIS = 16, //!< 
COLORMAP_CIVIDIS = 17, //!< 
COLORMAP_TWILIGHT = 18, //!< 
COLORMAP_TWILIGHT_SHIFTED = 19, //!< 
COLORMAP_TURBO = 20, //!< 
COLORMAP_DEEPGREEN = 21 //!< 
};
(4)、此功能通常用于增强图像的可视化效果,特别是在处理诸如热图(heatmaps)等数据可视化时非常有用。
二、示例代码: 循环切换各种滤镜
cpp
#include <iostream>
#include <opencv2/opencv.hpp>
void TestColorMap(cv::Mat & src)
{
int i_color_map[] = {
cv::COLORMAP_AUTUMN,
cv::COLORMAP_BONE,
cv::COLORMAP_JET,
cv::COLORMAP_WINTER,
cv::COLORMAP_RAINBOW,
cv::COLORMAP_OCEAN,
cv::COLORMAP_SUMMER,
cv::COLORMAP_SPRING,
cv::COLORMAP_COOL,
cv::COLORMAP_HSV,
cv::COLORMAP_PINK,
cv::COLORMAP_HOT,
cv::COLORMAP_PARULA,
cv::COLORMAP_MAGMA,
cv::COLORMAP_INFERNO,
cv::COLORMAP_PLASMA,
cv::COLORMAP_VIRIDIS,
cv::COLORMAP_CIVIDIS,
cv::COLORMAP_TWILIGHT,
cv::COLORMAP_TWILIGHT_SHIFTED,
cv::COLORMAP_TURBO,
cv::COLORMAP_DEEPGREEN
};
cv::Mat dst;
int index = 0;
while (true)
{
int c = cv::waitKey(1000);
if (c == 27)
{
break;
}
cv::applyColorMap(src, dst, i_color_map[index % 22]);
cv::imshow("颜色风格", dst);
index++;
}
}
int main()
{
cv::Mat src = cv::imread("../images/8.png");
if (src.empty())
{
std::cout << "load src image error..." << std::endl;
return -1;
}
cv::imshow("原始图像", src);
TestColorMap(src);
return 0;
}