CV_8U和CV_32F与CV_8UC3和CV_32FC3区别

标题 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);   

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

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值