CV_8U和CV_32F与CV_8UC3和CV_32FC3区别-程序员宅基地

技术标签: c++  计算机视觉  图像处理  人工智能  opencv  

标题 opencv 中常用数据类型的区别以及数据类型的转换

8代表8bit 每一个像素点在内存空间占用8bit
S–代表—signed int—有符号整形
U–代表–unsigned int–无符号整形
F–代表–float---------单精度浮点型
同时注意 CV_8U 代表的是单通道图像,数据范围是{0-255} CV_32F代表的图像是单通道图像,数据范围是{0.0 - 1.0}

imshow在显示图像时均会映射到{0-255}之间 CV_8U显示的就是0-255但要注意,在显示CV_32F类型数据时,要乘以255计算的到的数据 CV_16U的数据要除以256

	Mat img = Mat::zeros(Size(512, 512), CV_8U);  //创建一个8位单通道图像
	img = Scalar(127);  //灰黑色
	imshow("img", img);

在这里插入图片描述


	Mat dst1 = Mat::zeros(Size(250, 250), CV_32F);  //创建一个单通道32位图像
	dst1 = Scalar(0.5);// 灰黑色图像
	
	//imshow("dst", dst);
	imshow("dst1", dst1); 

在这里插入图片描述
要注意在图像类型转换过程中,图像要进行归一化处理否则 图像就会产生出乎意料的意外。(下面的例子如果不进行归一化就会产生白色图像,因为相当于Scalar(1.0))

Mat dst = Mat::zeros(Size(250, 250), CV_8U);  //创建一个8位单通道图像
	dst = Scalar(127);  //灰黑色
	imshow("转换前", dst);
	dst.convertTo(dst, CV_32F);  //16代表CV_8UC3  21代表CV_32FC3  归一化计算
	normalize(dst, dst, 1.0, 0, NORM_MINMAX);  //将图片归一化到0 -1 之间

	imshow("转换后", dst);   

在这里插入图片描述
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43422995/article/details/122325202

智能推荐

STM32CUBEMX学习笔记——陶晶驰串口屏中断接收数据_陶晶瓷串口屏怎么接收-程序员宅基地

文章浏览阅读2.4k次,点赞4次,收藏26次。网上很多串口屏的开发都是基于标准库开发的,我本人接触到的开发模式是CUBEMX,两种开发环境导致很多资料之间有点割裂,因此我将自己之前学习标准库的开发方式利用CUBEMX实现的方法写在这,防止自己忘记。开发环境还是之前做的项目,以一个按钮为例通过这个按钮学习串口屏的通讯 。b4和b6还需要按下一秒后连续改变h1和n1的数值,因此顺便回顾一下如何实现:b4的按下事件中加入定时器,如果连续1000ms就进入使能:tm2.tim=1000tm2.en=1使能后就在定时器模块中:t_陶晶瓷串口屏怎么接收

web前端培训分享JavaScript学习笔记分支结构_if(ture)前端-程序员宅基地

文章浏览阅读169次。web前端培训分享JavaScript学习笔记分支结构,我们的 js 代码都是顺序执行的(从上到下)逻辑分支就是根据我们设定好的条件来决定要不要执行某些代码IF 条件分支结构if 语句· 通过一个 if 语句来决定代码执行与否a· 语法: if (条件) { 要执行的代码 }· 通过 () 里面的条件是否成立来决定 {} 里面的代码是否执行// 条件为 true 的时候执行 {} 里面的代码if (true) {alert(‘因为条件是 true,我会执行’)}// 条件为 false 的_if(ture)前端

Java ExecutorService四种线程池的例子与说明_java executorservice 多线程 例子-程序员宅基地

文章浏览阅读160次。一、为什么使用线程池使用new Thread执行多个线程有如下一些问题: 每次new Thread新建对象性能差。 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。 缺乏更多功能,如定时执行、定期执行、线程中断。相比new Thread,Java提供的四种线程池的好处在于: 重用存在的线程,减少对象创建、消亡的..._java executorservice 多线程 例子

高级映射(一):一对一、一对多,多对多查询总结_购物车和商品是一对多还是多对多-程序员宅基地

文章浏览阅读2w次,点赞2次,收藏18次。多表之间的数据交互其实一对一和一对多映射,在前面的配置中已经接触到,我没在日志里直接说明,是因为想要在之后写一篇总结日志(就是本篇),总结这些高级映射的配置。例如一对一查询在关联的嵌套结果集查询中就涉及到,一对多查询则在这个基础上再加上一个或多个嵌套结果集,它们可以是一个实体类,或者是一个集合。多对多查询稍微有点复杂,举个例子来说,一个商城管理系统中,一名顾客在一个购物清单中可以有多件商品,而..._购物车和商品是一对多还是多对多

值得关注的 CI/CD 主要趋势-程序员宅基地

文章浏览阅读909次,点赞10次,收藏9次。CI/CD 是那些想要加速应用程序交付、发布周期、控制成本并降低开发风险的人的首选。适应用户反馈、提高对市场变化和业务优先级的响应能力以及提升竞争力取决于应用程序质量,CI/CD 成为提高开发速度的宝贵推动者。

个推图可视化应用实践_d3js和g6|graphin对比-程序员宅基地

文章浏览阅读5.2k次。个推资深前端开发专家 东风图可视化应用是数据可视化的一个重要组成部分。图指的是知识图谱(Knowledge Graph),此概念于2012年由Google正式提出,旨在帮助Google优化搜索引擎返回的结果,提升用户搜索质量及体验。个推作为专业的数据智能服务商,在图可视化应用方面也进行了丰富的实践。本文将从四部分讲述图可视化应用:应用场景、组成部分、个推图可视化组件、个推图可视化展望。(文末附视频版讲解及完整资料下载)01图可视化应用场景..._d3js和g6|graphin对比

随便推点

Linux里的防火墙:netfilter简介与Iptables的使用(上)_netfilter (policy drop)-程序员宅基地

文章浏览阅读3.6k次。什么是防火墙?防火墙可以是像360,金山,卡巴斯基等软件,也可以是硬件,我们来用OSI七层模型来划分的话。那么分为:1. 三层防火墙:它只负责检查数据从进入到第三层,还有从第三层流出,是否符合它规定的条件,如果是,那么就放行,反之就拦截。2.七成防火墙:它_netfilter (policy drop)

你了解 JDK 8 Stream 数据流效率吗?千万级数据量性能如何?-程序员宅基地

文章浏览阅读921次,点赞9次,收藏20次。当数据源中的数据上了流水线后,这个过程对数据进行的所有操作都称为“中间操作”;中间操作仍然会返回一个流对象,因此多个中间操作可以串连起来形成一个流水线;stream 提供了多种类型的中间操作,如 filter、distinct、map、sorted 等等;当所有的中间操作完成后,若要将数据从流水线上拿下来,则需要执行终端操作;stream 对于终端操作,可以直接提供一个中间操作的结果,或者将结果转换为特定的 collection、array、String 等;

2023最新软件测试学习思维导图(从小白到大师进阶之路)_测试进阶路线图-程序员宅基地

文章浏览阅读2.7k次,点赞6次,收藏41次。2023最新软件测试学习思维导图_测试进阶路线图

Zabbix监控系统与部署Zabbix5.0监控(系列操作完整版)-程序员宅基地

文章浏览阅读4.9k次,点赞17次,收藏38次。Zabbix监控系统的理论介绍与部署安装Zabbix5.0服务端、客户端、自定义监控项模板、设置邮件报警、自动发现、自动注册、代理服务器、SNMP监控实操_zabbix监控系统

在MyEclipse中将项目部署Tomcat_myeclipse部署web项目到tomcat-程序员宅基地

文章浏览阅读2k次。(1)配置Server(2)选择Tomcat 7.0 的解压目录。点击apply。点击ok即可。5.部署到Tomcat点击finish即可。然后ok。6.启动Tomcat,_myeclipse部署web项目到tomcat

Linux系统部署可视化数据多维表格APITable并实现无公网IP远程协同办公-程序员宅基地

文章浏览阅读7.9k次,点赞105次,收藏108次。Linux系统部署可视化数据多维表格APITable并实现无公网IP远程协同办公