OpenCV 访问图像(Mat类的对象)中像素的三类方法

【方法一】用指针访问像素
用指针访问像素的方法利用的是C语言中的操作符[]。这种方法最快,但是略有点抽象

void colorReduce(Mat& inputImage,Mat& outputImage,int div)
{
   
	outputImage = inputImage.clone();  //复制实参到临时变量
	int row = outputImage.rows;        //行数
	int col = outputImage.cols*outputImage.channels(); //列数×通道数=每一行元素的个数

	//双重循环,遍历所有的像素值
	for (int i = 0;i < row; i++)  //行循环
	{
   
		uchar* data = outputImage.ptr<uchar>(i); //获取第i+1行的首地址
		for (int j = 0;j < col;j++) //列循环
		{
   
			data[j] = data[j]/div*div+div/2;
		}
	}
}

【方法二】用迭代器操作像素
这种方法与STL库的用法类似,相比用指针直接访问可能出现越界问题,迭代器绝对是非常安全的方法(以下代码以3通道彩色图像为例)

void colorReduce(Mat& inputImage,Mat& outputImage,int div
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值