OpenCV杂记(4):OpenCV之色彩映射(伪彩applyColorMap)

1. 简述

        我们在开发基于热成像(红外)或者做深度估计应用时,为了便于直观的观察,常常将检测结果进行色彩上的映射,这样便可以很直观的看出哪里温度高,哪里温度低,或者哪里深度更深或更浅。

        我们将一些标量值赋予特定的颜色的做法,称作色彩映射,更通俗的,我们称之为伪彩。

2. OpenCV伪彩函数

        OpenCV提供了一个方便我们做伪彩的函数接口。

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

其中,

        src:CV_8UC1或CV_8UC3类型的原图像,灰度图或彩色图;

        dst:映射后的图像;

        colormap:色彩映射图种类;

3. 举例

        此处以深度估计举例,我们在使用DepthAnything算法执行推理时,网络输出是一个浮点数类型的Tensor,其值在一定程度上代表了深度程度。

    /** 推理. */output_data = this->predict(input_data);cv::Mat output_tensor(output_data);output_tensor =output_tensor.reshape(1, {input_width, input_height});double minVal, maxVal;cv::minMaxLoc(output_tensor, &minVal, &maxVal);output_tensor.convertTo(output_tensor, CV_32F);if (minVal != maxVal) {output_tensor = (output_tensor - minVal) / (maxVal - minVal);}output_tensor *= 255.0;output_tensor.convertTo(output_tensor, CV_8UC1);cv::applyColorMap(output_tensor, output_tensor, cv::COLORMAP_HOT);return output_tensor;

        推理直接输出的output_data是一个连续存储的float序列,我们经过reshape进行转换,得到了一个shape(1, input_height, input_width)的图像,之后经过minMaxLoc获得最大值和最小值。

        通过与255.0相乘,获得一个介于0和255之间的图像,这一步已经获得一个灰度图了。

        接下来,我们将灰度图导入到applyColorMap中,获得伪彩图像。

        前面讲到,colormap有多种不同的伪彩形式,如下列举简单几个作为参考。

        COLORMAP_AUTUMN,

        COLORMAP_BONE,

        COLORMAP_JET,

        

        COLORMAP_WINTER,

        COLORMAP_RAINBOW,

        COLORMAP_OCEAN,

        COLORMAP_SUMMER,

        COLORMAP_SPRING,

        COLORMAP_COOL,

        COLORMAP_HSV,

        COLORMAP_PINK,

        COLORMAP_HOT,

        COLORMAP_PARULA,

        COLORMAP_MAGMA,

        COLORMAP_INFERNO,

        COLORMAP_PLASMA,

        COLORMAP_VIRIDIS,

        COLORMAP_CIVIDIS,

        COLORMAP_TWILIGHT,

        COLORMAP_TWILIGHT_SHIFTED

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/42689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数列结构(3.9)——队列应用

树的层次遍历 树的层次遍历,也称为树的广度优先遍历,是一种按照树的层次顺序,从上到下、从左到右遍历树中所有节点的算法。在二叉树中,这种遍历方式通常使用队列来实现。下面是层次遍历的基本步骤: 创建一个空队列&a…

Golang | Leetcode Golang题解之第220题存在重复元素III

题目: 题解: func getID(x, w int) int {if x > 0 {return x / w}return (x1)/w - 1 }func containsNearbyAlmostDuplicate(nums []int, k, t int) bool {mp : map[int]int{}for i, x : range nums {id : getID(x, t1)if _, has : mp[id]; has {retu…

java中反射(Reflection)的4个作用

java中反射(Reflection)的4个作用 作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断任意一个类所具有的成员变量和方法作用4、在运行时调用任意一个对象的方法总结 💖The Begin💖…

【Android】自定义换肤框架05之Skinner框架集成

引入依赖 api("io.github.hellogoogle2000:android-skinner:1.0.0")初始化Skinner 在所有功能前调用即可,建议在Application中初始化 SkinnerKit.init(application)安装皮肤包 在应用该皮肤包前安装即可,建议预安装,或应用皮肤…

扩散模型笔记2

Ref:扩散模型的原理及实现(Pytorch) 在扩散模型中,每一步添加的噪声并不是完全一样的。具体来说,噪声的添加方式和量在每一步是根据特定的规则或公式变化的。这里我们详细解释每一步添加噪声的过程。 正向过程中的噪声添加&…

vb.netcad二开自学笔记9:界面之ribbon

一个成熟的软件怎么能没有ribbon呢&#xff0c;在前面的框架基础上再加个命令AddRibbon <CommandMethod("AddRibbon")> Public Sub AddRibbon() Dim ribbonControl As RibbonControl ComponentManager.Ribbon Dim tab As RibbonTab New RibbonTab() tab.Tit…

初中化学知识点总结(人教版)

第一单元 走进化学世界 一 物质的变化和性质 1物理变化&#xff1a;没有生成其它物质的变化叫做物理变化。 化学变化&#xff1a;生成其他物质的变化叫做化学变化&#xff0c;又叫化学反应。 物理变化和化学变化的区别&#xff1a;是否有其他物质生产。 2化学变化的基本特…

Python - 自动化办公,将yml根据转换规则转换成‘‘ = ‘‘

文章目录 前言## Python - 自动化办公&#xff0c;将yml根据转换规则转换成 1. 准备工作2. demo3. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会…

【教程】新的Selenium!整合了隐藏浏览器指纹等功能

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 前景提要 driver Driver() 常用driver 接口 最后的话 前景提要 新的selenium&#xff0c;整合了隐藏浏览器指纹&#xff0c;非常好用&#x…

算法库应用--KMP算法解决串匹配问题

学习来源 学习贺利坚老师博客 数据结构例程——串的模式匹配&#xff08;KMP算法&#xff09;_数据结构模式匹配例题-CSDN博客 本人引导博客 串的匹配 (KPM算法由来引导)_kpm匹配失败-CSDN博客 转载大佬sofu博客 https://www.cnblogs.com/dusf/p/kmp.html 本人详细思路引导b战…

代码随想录算法训练营第四十九天| 300.最长递增子序列 , 674. 最长连续递增序列 , 718. 最长重复子数组

300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; class Solution {public int lengthOfLIS(int[] nums) {int[] dp new int[nums.length];dp[0] 1;for(int i1;i<nums.length;i){for(int j0;j<i;j){if(nums[i] > nums[j]){dp[i] Math.max(dp[j],dp[i])…

【Spring Boot】关系映射开发(三):多对多映射

《JPA 从入门到精通》系列包含以下文章&#xff1a; Java 持久层 API&#xff1a;JPA认识 JPA 的接口JPA 的查询方式基于 JPA 开发的文章管理系统&#xff08;CRUD&#xff09;关系映射开发&#xff08;一&#xff09;&#xff1a;一对一映射关系映射开发&#xff08;二&#…

香橙派AIpro做目标检测

使用香橙派AIpro做目标检测 文章目录 使用香橙派AIpro做目标检测香橙派AIpro开发板介绍香橙派AIpro应用体验快速体验香橙派的AI功能YOLOV5s目标检测使用场景描述图像目标检测视频目标检测摄像头目标检测YOLOv5s 目标检测的运行结果分析香橙派 AIpro 在运行过程中的表现 香橙派A…

git杂记

git 安装&#xff1a; 在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win&#xff0c;下载会自动开始。 要注意这是一个名为 Git for Windows 的项目&#xff08;也叫做 msysGit&#xff09;&#xff0c;和…

基于Java+SpringMvc+Vue技术的实验室管理系统设计与实现

博主介绍&#xff1a;硕士研究生&#xff0c;专注于信息化技术领域开发与管理&#xff0c;会使用java、标准c/c等开发语言&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架…

SUSAN

1995年英国牛津大学的S.M.Smith提出了一种新的图像边缘检测算法SUSAN算法,不同于以前经典边缘检测算法,SUSAN算法基于灰度相似性比较,采用圆形模板,对图像进行灰度差统计,无需计算方向导数,而且具备积分特性,它简单而且有效,适用于图像中边缘和角点的检测,可以去除图像…

土豆炒肉做法

菜单&#xff1a;土豆、葱、铁辣子、纯瘦肉、淀粉、生抽、酱油、刀、案板、十三香、盐巴、擦板 流程&#xff1a; 洗土豆&#xff0c;削皮&#xff0c;擦成条&#xff0c;用凉水过滤两遍淀粉&#xff0c;顺便放个燥里洗肉&#xff0c;切成条&#xff0c;按照生抽、酱油、淀粉、…

js好用的动态分页插件

js好用的动态分页插件是一款简单的分页样式插件&#xff0c;支持样式类型&#xff0c;当前页&#xff0c;每页显示数量&#xff0c;按钮数量&#xff0c;总条数&#xff0c;上一页文字&#xff0c;下一页文字&#xff0c;输入框跳转等功能。 js好用的动态分页插件

通过IDEA生成webapp及web.xml配置文件

1、选择File->Project Structure 2、选择Modules-> + -> Web 有的springboot工程选择是war工程,这个web可能已经存在了。 如果不存在,就手动创建,创建后,需要修改pom.xml中的配置 <packaging>war</packaging> 3、创建webapp根目录 这步重点就是创建…