《opencv实用探索·四》Mat图像数据类型转换和归一化显示

一种数据类型转为另一种数据类型,不改变图像大小,但每个像素值可能会变

cpp 复制代码
src.convertTo(dst, type, scale, shift);

Scale和shitf默认为0(这两个参数也相当于对比度和亮度)

现在有个8位图像,把8位转成32位


可以看到像素大小没变,但位深度变了,8位无符号情况下的图像像素值超过255就溢出,但转成32位就不会溢出。

scale为1.0/255,shitf默认为0

像素值的计算过程为:mat2(191*(1.0/255), 127*(1.0/255), 63*(1.0/255), 0)

scale为1.0/255,shitf为-1


像素值的计算过程为:mat2(191*(1.0/255)-1, 127*(1.0/255)-1, 63*(1.0/255)-1, -1)

我们知道16为无符号像素范围为0-65535,现在有个八位图像Img,像素值是255,转到十六位

cpp 复制代码
img.convertTo(img, CV_16U); 

img像素值还是255,但会出现一个现象:

原来8为的时候像素值是255,但图像显示都很正常,现在转到16位,像素值依旧255,但这时候图像显示基本全黑,这是为啥?

因为8位的时候像素范围是0-255,最亮的像素点大小即为255,当然可以正常显示,但16位范围0-65535,最亮点在65535,255相比65535可以忽略不计,所以图像基本全黑,这时候想要正常显示需要做归一化处理normalize

把0-255扩大到0-65535,这时候能正常显示图像。

转成32位需要注意的是:

32F图像显示范围为0-1,img.convertTo(img, CV_32F); 8位255值转32位依旧255,但32位图像显示范围0-1,超过1就是全白,这时候需要把32位图像归一化处理。

cpp 复制代码
normalize(img,img, 0, 1, NORM_MINMAX); 

img范围0-1,类型32位不变。
注意:不能直接把高位往低位转,比如16位转8位,低于255的不变,高于的全部转位255,数据的实际信息会丢失.如果设置为很大的值,数据丢失的会更大。
注意:归一化不会改变图像位深度,之前是16位,之后也是16位

相关推荐
海宇数据2 分钟前
零信任架构实战:基于海宇公安二要素认证即时版构建自动化对公账户准入网关
运维·人工智能·架构·自动化
Aloudata3 分钟前
指标平台与 Data Agent 协同指南:如何让 AI 问数调用可信指标
大数据·人工智能·数据分析·data agent·语义层
TMT星球3 分钟前
网易有道周枫:AI能力竞争,正在进入「Model + Agent + Workflow」时代,网易有道AI Open Day展示AI时代“有道解法”
人工智能·科技
m4Rk_4 分钟前
【论文阅读】Agent 记忆机制(73):MemGAS——让长期对话记忆按问题选择粒度并关联证据
论文阅读·人工智能·学习·开源·github
韩曙亮12 分钟前
【AI 大模型】各 AI 大厂 Agent 平台各等级订阅会员对比分析 ( 字节 TRAE、腾讯 Buddy、阿里 Qoder CN、百度 DuMate )
人工智能·ai·大模型·ai大模型·qoder·workbuddy·traecode
dayuOK630719 分钟前
内容创作工具的下一站:从“单点生成”到“工作流智能体”
大数据·人工智能·新媒体运营·aigc·ai写作
学贵有疑人贵有德20 分钟前
AI for Science 的基础:对齐现象,而不是对齐主流权威模型
人工智能
Runwise创新社区21 分钟前
企业上 Agentic AI 之前:用例准入五条、技术底座体检表与自研/合作的决策边界
人工智能·架构·ai agent·业务架构
三小河31 分钟前
实现一个兼容多输出类型的 Agent Chat
人工智能
Rocky Ding*32 分钟前
【三年面试五年模拟】2026-09-16 字节跳动 Agent 秋招一面全解析:从 Harness、记忆与并发到算法题的系统化解析
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·ai agent