OpenCV-Python教程:颜色图(applyColorMap)[只需几行代码生成22种风格各异的彩色图]

发表于2021年10月20日 作者 桔子菌

返回OpenCV-Python教程

原文链接:http://www.juzicode.com/opencv-note-color-map-applycolormap

在OpenCV中通常使用cvtColor()进行色彩空间的转换,它可以实现彩色图像在各种色彩空间里的转换,也可以用于彩色图像和灰度图像之间相互转换,但是在彩色图像转换到灰度图像后,再用该灰度图转换回彩色图像只是名义上多通道的彩色图像,人眼看到的却不是“彩色”了。下面这个例子展示了这个彩转灰、灰转彩的过程:

#vx:桔子code / juzicode.com
import cv2
img_src = cv2.imread("nezha.jpg")
img_gray = cv2.cvtColor(img_src,cv2.COLOR_BGR2GRAY)    #彩色转灰度
print(img_gray.shape)    #单通道
img_color = cv2.cvtColor(img_gray,cv2.COLOR_GRAY2BGR)  #灰度转彩色
print(img_color.shape)   #3通道
cv2.imshow('img_color',img_color)
cv2.imshow('img_src',img_src)
cv2.waitKey()
cv2.destroyAllWindows()    

上图中右边是用cvtColor转换为灰度图后再转回的彩色图,在这个彩色图里面我们一点“彩色”的影子都看不到了。

有没有方法可以让转换成后的彩色图看起来更“彩色”呢?​这里介绍一个功能更强大的接口函数:applyColorMap(),它可以将灰度图像转换成彩色图像,转换的模式达22种之多,它的接口形式是这样的:

cv2.applyColorMap(src, colormap[, dst]) ->dst

其中src为输入图像,可以是单通道或3通道的8bit图像。

colormap为颜色图模式,可以传入整数0~21对应各种不同的颜色图,或者用cv2.COLORMAP_AUTUMN(等价于0)、cv2.COLORMAP_BONE(等价于1)等方式传入,OpenCV源码头文件中定义的22种模式如下:

//! GNU Octave/MATLAB equivalent colormaps
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)
};

各种ColormapTypes对应的色彩是下图这样的,有各种春夏秋冬四季风格、冷热风格等等:

OpenCV-Python 彩色图相关推荐

  1. opencv生成彩色图c++代码实例及运行结果

    c++代码 #include<opencv2/opencv.hpp>using namespace std; using namespace cv;Mat cartoonColor(Mat ...

  2. python opencv cv.applyColorMap()函数(颜色映射)ColormapTypes【将Intel Realsense D435深度图的黑白图映射为彩色图】

    文章目录 API ColormapTypes 完整应用代码[将深度图的黑白图映射为彩色图] map原理 能否map CV_24UC3的? API def applyColorMap(src, colo ...

  3. 使用OpenCV可视化Intel Realsensen D435 深度图为彩色图

    使用OpenCV可视化Intel Realsensen D435 深度图为彩色图 使用OpenCV将深度图转化为彩色图像,主要使用下面两个函数: cv2.convertScaleAbs(depth_i ...

  4. c++ opencv 彩色图rgb 转换hsv 再通道分离

    c++ opencv 彩色图rgb 转换hsv 再通道分离 // An highlighted block Mat img_hsv;cvtColor(img, img_hsv, COLOR_BGR2H ...

  5. opencv将灰度图转为彩色图

    使用opencv将一幅灰度图转为彩色图. 使用函数:cvtColor(); Mat imgGray= imread("gray.jpg",0);     Mat imgRGB;   ...

  6. python将灰度图保存为8bit彩色图

    问题: 在制作语义分割图像数据集过程中,输出gt可能是表示类别的单通道灰度图,为了可视化,需要使用颜色映射转化为彩色图,灰度转3通道彩图参考使用numpy.颜色映射表 将灰度图变彩图,灰度转3通道彩色 ...

  7. OpenCV4使用applyColorMap()函数,可以将灰度图或彩色图转换成自定义的彩色图,或opencv提供的20多种色彩值

    文章目录 1.applyColorMap()函数的使用: (1)函数原型: void applyColorMap(InputArray src, OutputArray dst, int colorm ...

  8. c++ opencv 灰度图转彩色图

    灰度图转彩色图______主要作用:在图上画彩色线条等等 //灰度图转彩色图 cv::Mat grayToRGB(const cv::Mat input_img) {//创建一个和灰度图一样大小的0值 ...

  9. python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件

    基本知识 灰度图像的存储方式: image 多通道图像存储方式 image OpenCV 中的通道存储为 BGR 像素值的存储方式 RGB 模式,显示设备采用这种模式 HSV.HLS 将颜色分解成色调 ...

  10. matlab 双边滤波(彩色图)

    % matlab 2012b % 彩色图的双边滤波 clc; clear; src=imread('cs.jpg'); %加载彩色图 %-------双边滤波 参数 ----------------- ...

最新文章

  1. UVALive5389 UVA414 POJ1493 ZOJ1339 Machined Surfaces
  2. Rus入门到放弃——字符串与字符切片
  3. 实用工具篇(三):Free Mybatis plugin
  4. xml view里control id的生成逻辑
  5. views 多个文件夹 netcore_.NET Core 分发打包
  6. foxit phantom pdf 7.3_Jpeg to Pdf Converter 3000批量将图片转为PDF的方法
  7. btoa java_javascript atob()函数和 btoa()函数-Base64的编码与解码-Go语言中文社区
  8. 电脑解锁后黑屏有鼠标_电脑开机黑屏只有鼠标如何解决
  9. Windows域策略设置 IE信任站点【全域策略生效】
  10. 华为荣耀路由器虚拟服务器,华为荣耀路由器登录入口设置指南
  11. Android Srt和Ass字幕解析器
  12. 范德蒙行列式计算以应用
  13. NoteExpress自定义题录表头显示字段
  14. c语言将阿拉伯数字变为大写,使用C#实现阿拉伯数字到大写中文的转换
  15. DirectX12初始化三——DirectX图形基础结构,功能支持检测,资源驻留
  16. 首发,看了这份美团架构师的spring源码笔记后,才发现原来学习的思路都错了
  17. 阿里云弹性伸缩在生产环境中的实战应用
  18. 满天星(HTML+CSS+JS)
  19. 异常处理——NullPointerException
  20. AD新建工程快速绘制PCB封装

热门文章

  1. 干Java开发快30岁了,没有核心竞争力,该怎么跳槽面试?
  2. 抖音快手超火的小霸王游戏机
  3. 实时数据库的数据采集
  4. bkt项目 (四)搭建环境并测试之3添加日志和 Thymeleaf 模板
  5. 函数的返回值return
  6. JavaScript: The Definitive Guide 6th 英文原版书
  7. java akka actor_AKKA Actor创建
  8. 三国志吞食天地2(街机)的全人物通关研究
  9. Win10 远程连接服务器时出现“由于CredSSP加密数据库修正”的错误提示的解决办法
  10. android webview 加载图片一直显示正在加载中