OpenCV(C++接口)学习笔记2-像素级的图像操作

本文介绍了OpenCV中C++接口进行像素级图像操作的方法,包括使用at()成员函数、ptr()方法、MatIterator及访问邻域元素。强调了不同方法在效率和适用场景上的差异,如at()函数适用于随机访问,ptr()提升遍历速度,连续内存的判断与利用,以及拉普拉斯算子的像素邻域操作。
摘要由CSDN通过智能技术生成

1、通过成员函数at(int y, int x)访问

这种方法需要知道像素保存的格式。

(1) 这是为模板类型的函数,因为一个函数的返回类型只有在运行时才会知道。

(2)这个函数返回的是一个向量即Vector,故有下标的操作。

image.at<uchar>(j,i)= 255;

在单通道图像中,采用以上语句可以获取图像(i,j)处的灰度值(注:先行后列,一般用j表示行(rows),i表示列(cols))。如果是灰度图像的话,只需要更改一个数据就可以了。如果是rgb图像的话,就要用“[]”来获取改变那个channel的值:

image.at<cv::Vec3b>(j,i)[channel]= value; 

这里的<Vec3b>代表的意思是:a vector of three 8-bit value。也可以是Vec2b,Vec4b。


调用模板类型的at()函数有时是效率不高的,因为它的返回类型每次都要由传递的一个模板参数来确定。所以当矩阵的类型已知时,如一个 uchar Matrix,可以利用Mat_类。

cv::Mat_<uchar> im2= i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值