OpenCV伪彩色applyColorMap函数

 

       假如我们想在图片上显示不同区域的温度,我们可以把红外图像上的温度数据叠加为灰度图像,暗的区域代表冷的温度,更明亮的区域代表较热的温度,但是这样的呈现不能给人类视觉带来直觉的感受,不能更好地感知颜色的变化。如果我们用不同的颜色代表不同的温度,比如用蓝色表示冷的温度,红的表示热的温度,能够带来更好的感知。为了更好地展示数据,我们把数据转换为彩色数据来实现可视化,用伪彩色更好地显示温度、压力、湿度等数据。

OpenCV提供了伪彩色函数applyColorMap来实现伪彩色功能。

原型1

CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap);

功能

把给定的图像转换为伪彩色图像。

参数释义:

  • 参数1 src 输入源图像,灰度图或者CV_8UC1、CV_8UC3类型的图。

  • 参数2 dst 转换后的伪彩色图,注意:dst调用了Mat::create

  • 参数3 colormap 伪彩色图像类型 参考ColormapTypes

原型2

CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, InputArray userColor);

功能

把给定的图像转换为伪彩色图像。

参数释义:

  • 参数1 src 输入源图像,灰度图或者CV_8UC1、CV_8UC3类型的图。

  • 参数2 dst 转换后的伪彩色图,注意:dst调用了Mat::create

  • 参数3 userColor 用户定义的类型,适用于类型:CV_8UC1 或者 CV_8UC3并且大小为256

示例源码

#include <iostream>
#include <opencv2/opencv.hpp>
​
int main() {
    cv::Mat image = cv::imread("D:\\OpenCVtest\\images\\juice.png");
    cv::Mat imageMapAutum;
    cv::Mat imageMapBone;
    cv::Mat imageMapJet;
    cv::Mat imageMapCIVIDIS;
    cv::Mat imageMapCOOL;
    cv::Mat imageMapDEEPGREEN;
    cv::Mat imageMapHOT;
    cv::Mat imageMapHSV;
    cv::Mat imageMapINFERNO;
    cv::Mat imageMapMAGMA;
    cv::Mat imageMapOCEAN;
    cv::Mat imageMapPARULA;
    cv::Mat imageMapPINK;
    cv::Mat imageMapPLASMA;
    cv::Mat imageMapRAINBOW;
    cv::Mat imageMapSPRING;
    cv::Mat imageMapSUMMER;
    cv::Mat imageMapTURBO;
    cv::Mat imageMapTWILIGHT;
    cv::Mat imageMapTWILIGHT_SHIFTED;
    cv::Mat imageMapVIRIDIS;
    cv::Mat imageMapWINTER;
​
    cv::applyColorMap(image, imageMapAutum, cv::COLORMAP_AUTUMN);
    cv::applyColorMap(image, imageMapBone, cv::COLORMAP_BONE);
​
    cv::applyColorMap(image, imageMapJet, cv::COLORMAP_JET);
    cv::applyColorMap(image, imageMapCIVIDIS, cv::COLORMAP_CIVIDIS);
    cv::applyColorMap(image, imageMapCOOL, cv::COLORMAP_COOL);
    cv::applyColorMap(image, imageMapDEEPGREEN, cv::COLORMAP_DEEPGREEN);
    cv::applyColorMap(image, imageMapHOT, cv::COLORMAP_HOT);
    cv::applyColorMap(image, imageMapHSV, cv::COLORMAP_HSV);
    cv::applyColorMap(image, imageMapINFERNO, cv::COLORMAP_INFERNO);
    cv::applyColorMap(image, imageMapMAGMA, cv::COLORMAP_MAGMA);
    cv::applyColorMap(image, imageMapOCEAN, cv::COLORMAP_OCEAN);
    cv::applyColorMap(image, imageMapPARULA, cv::COLORMAP_PARULA);
    cv::applyColorMap(image, imageMapPINK, cv::COLORMAP_PINK);
    cv::applyColorMap(image, imageMapPLASMA, cv::COLORMAP_PLASMA);
    cv::applyColorMap(image, imageMapRAINBOW, cv::COLORMAP_RAINBOW);
    cv::applyColorMap(image, imageMapSPRING, cv::COLORMAP_SPRING);
    cv::applyColorMap(image, imageMapSUMMER, cv::COLORMAP_SUMMER);
    cv::applyColorMap(image, imageMapTURBO, cv::COLORMAP_TURBO);
    cv::applyColorMap(image, imageMapTWILIGHT, cv::COLORMAP_TWILIGHT);
    cv::applyColorMap(image, imageMapTWILIGHT_SHIFTED, cv::COLORMAP_TWILIGHT_SHIFTED);
    cv::applyColorMap(image, imageMapVIRIDIS, cv::COLORMAP_VIRIDIS);
    cv::applyColorMap(image, imageMapWINTER, cv::COLORMAP_WINTER);
    
    
​
    cv::imshow("image", image);
    cv::imshow("Autum", imageMapAutum);
    cv::imshow("Bone", imageMapBone);
    cv::imshow("Jet", imageMapJet);
    cv::imshow("CIVIDIS", imageMapCIVIDIS);
    cv::imshow("COOL", imageMapCOOL);
    cv::imshow("DEEPGREEN", imageMapDEEPGREEN);
    cv::imshow("HOT", imageMapHOT);
    cv::imshow("HSV", imageMapHSV);
    cv::imshow("INFERNO", imageMapINFERNO);
    cv::imshow("MAGMA", imageMapMAGMA);
    cv::imshow("OCEAN", imageMapOCEAN);
    cv::imshow("PARULA", imageMapPARULA);
    cv::imshow("PINK", imageMapPINK);
    cv::imshow("PLASMA", imageMapPLASMA);
    cv::imshow("RAINBOW", imageMapRAINBOW);
    cv::imshow("SPRING", imageMapSPRING);
    cv::imshow("SUMMER", imageMapSUMMER);
    cv::imshow("TURBO", imageMapTURBO);
    cv::imshow("TWILIGHT", imageMapTWILIGHT);
    cv::imshow("TWILIGHT_SHIFTED", imageMapTWILIGHT_SHIFTED);
    cv::imshow("VIRIDIS", imageMapVIRIDIS);
    cv::imshow("WINTER", imageMapWINTER);
    
    std::cout << "";
​
    cv::waitKey(0);
}

运行结果如下图所示,效果供各位参考使用:

 

 

 

 

 

 

 

 

 

参考

ColormapTypes枚举定义

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值