OpenCv中,对图片像素进行处理的方法小结

1、获取像素的对象

通过src.at<uchar>(row,col)获取单通道像素;通过src.ar<Vec3b>(row,col)[i](i=0,1,2)获取红绿蓝三通道的像素。

	//获取图像的像素
	int height = src.rows;
	int width = src.cols;
	int channel = src.channels();
	for (int row = 0; row < height; row++) {
		for (int col = 0; col < width; col++) {
			if (channel == 1) {	//单通道图片
				int value = src.at<uchar>(row, col);
			}
			else if (channel == 3) {	//三通道图片
				int b = src.at<Vec3b>(row, col)[0];		//蓝色通道的像素
				int g = src.at<Vec3b>(row, col)[1];		//绿色通道的像素
				int r = src.at<Vec3b>(row, col)[2];		//红色通道的像素
			}
		}
	}

 2、通过像素指针对像素进行处理

	//通过像素指针获取像素并对其进行处理
	int height = src.rows;
	int width = src.cols;
	int channels = src.channels();
	Mat dst;		//初始化dst对象
	dst = Mat::zeros(src.size(), src.type());
	for (int row = 0; row < height; row++) {
		const uchar * pixel = src.ptr<uchar>(row);		//通过指针获取src对象像素值,只能够作为右值
		uchar * output = dst.ptr<uchar>(row);		//用来保存经过处理之后的像素值,可以作为左值
		for (int col = 0; col < width; col++) {
			output[col] = saturate_cast<uchar>(pixel[col] * 5 + 10);		//将修改之后的像素值保存在dst中
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值