图像像素处理:灰度图和彩色图; 实例-----使用uchar格式与float格式互相转化

本文通过实例介绍了如何使用OpenCV在C++中处理图像像素,涉及uchar和float格式的互相转化。在灰度图像转换中,通过指针访问每个像素,而彩色图像处理时需考虑3个通道。文章探讨了处理过程中的注意事项,并欢迎读者提供更优的实现方法。
摘要由CSDN通过智能技术生成

opencv的图像处理通常会对像素进行处理,因此需要读取像素,我通过实例-----使用uchar格式与float格式互相转化来说明如何对图像的像素进行处理。

在C++函数处理时,通常是使用指针来改变图像值,因此,本例也是使用指针访问像素。

下面为灰度图转换,通过读取每一行第一个像素的地址,来访问每一个像素。注意图像是什么格式,像素首地址就是什么格式,不同格式取地址会出错。

void uchar2float(const Mat tyuchar, Mat &tyfloat)
{
	for (int i = 0; i < tyuchar.rows; i++)
	{
		const uchar* ty1 = tyuchar.ptr<uchar>(i);
		float* ty2 = tyfloat.ptr<float>(i);
		for (int j = 0; j < tyuchar.cols; j++)
		{
			ty2[j] = ty1[j];
		}
	}
}

彩色图像转换,由于彩色图像包含3个通道,因此需要乘上通道数来访问到需要的处理的像素。

void uchar2float(const Mat tyuchar, Mat& tyfloat)
{
	for (int i = 0; i < tyuchar.rows; i++)
	{
		const uchar* ty1 = tyuchar.ptr<uchar>(i);
		float* ty2 = tyfloat.ptr<float>(i);
		for (int j = 0; j < tyuchar.cols; j++)
		{
			//ty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值