OpenCV 自带颜色表实现各种滤镜

一、知识点
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, //!< ![autumn](pics/colormaps/colorscale_autumn.jpg)

COLORMAP_BONE = 1, //!< ![bone](pics/colormaps/colorscale_bone.jpg)

COLORMAP_JET = 2, //!< ![jet](pics/colormaps/colorscale_jet.jpg)

COLORMAP_WINTER = 3, //!< ![winter](pics/colormaps/colorscale_winter.jpg)

COLORMAP_RAINBOW = 4, //!< ![rainbow](pics/colormaps/colorscale_rainbow.jpg)

COLORMAP_OCEAN = 5, //!< ![ocean](pics/colormaps/colorscale_ocean.jpg)

COLORMAP_SUMMER = 6, //!< ![summer](pics/colormaps/colorscale_summer.jpg)

COLORMAP_SPRING = 7, //!< ![spring](pics/colormaps/colorscale_spring.jpg)

COLORMAP_COOL = 8, //!< ![cool](pics/colormaps/colorscale_cool.jpg)

COLORMAP_HSV = 9, //!< ![HSV](pics/colormaps/colorscale_hsv.jpg)

COLORMAP_PINK = 10, //!< ![pink](pics/colormaps/colorscale_pink.jpg)

COLORMAP_HOT = 11, //!< ![hot](pics/colormaps/colorscale_hot.jpg)

COLORMAP_PARULA = 12, //!< ![parula](pics/colormaps/colorscale_parula.jpg)

COLORMAP_MAGMA = 13, //!< ![magma](pics/colormaps/colorscale_magma.jpg)

COLORMAP_INFERNO = 14, //!< ![inferno](pics/colormaps/colorscale_inferno.jpg)

COLORMAP_PLASMA = 15, //!< ![plasma](pics/colormaps/colorscale_plasma.jpg)

COLORMAP_VIRIDIS = 16, //!< ![viridis](pics/colormaps/colorscale_viridis.jpg)

COLORMAP_CIVIDIS = 17, //!< ![cividis](pics/colormaps/colorscale_cividis.jpg)

COLORMAP_TWILIGHT = 18, //!< ![twilight](pics/colormaps/colorscale_twilight.jpg)

COLORMAP_TWILIGHT_SHIFTED = 19, //!< ![twilight shifted](pics/colormaps/colorscale_twilight_shifted.jpg)

COLORMAP_TURBO = 20, //!< ![turbo](pics/colormaps/colorscale_turbo.jpg)

COLORMAP_DEEPGREEN = 21 //!< ![deepgreen](pics/colormaps/colorscale_deepgreen.jpg)

};

(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;
}
相关推荐
地藏Kelvin1 分钟前
Spring Ai 从Demo到搭建套壳项目(二)实现deepseek+MCP client让高德生成昆明游玩4天攻略
人工智能·spring boot·后端
猫天意3 分钟前
【深度学习】为什么2个3×3的卷积可以相当于一个5×5的卷积核?为什么3个3×3的卷积相当于一个7×7的卷积核,到底区别在哪里?我们该如何使用?
人工智能·深度学习·神经网络·目标检测·视觉检测
AiTEN_Robotics13 分钟前
仓库自动化搬运:自动叉车与AGV选型要点及核心技术解析
人工智能·机器人·自动化
飞哥数智坊41 分钟前
Coze实战第12讲:轻松一句话搞定三餐计划、采购和制作,让AI助你健康饮食
人工智能·coze
阔跃生物1 小时前
Nature Methods | OmiCLIP:整合组织病理学与空间转录组学的AI模型
人工智能·深度学习·机器学习
武子康1 小时前
AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书
人工智能·爬虫·gpt·算法·机器学习·ai·音视频
赛卡1 小时前
汽车安全:功能安全FuSa、预期功能安全SOTIF与网络安全Cybersecurity 解析
人工智能·安全·网络安全·车载系统·自动驾驶·汽车
layneyao1 小时前
RPA+AI:自动化办公机器人开发指南
人工智能·自动化·rpa
Ama_tor2 小时前
14.AI搭建preparationのBERT预训练模型进行文本分类
人工智能·深度学习·bert
QQ676580083 小时前
基于 PyTorch 的 VGG16 深度学习人脸识别检测系统的实现+ui界面
人工智能·pytorch·python·深度学习·ui·人脸识别