OpenCV学习笔记:像素值读取at()函数

OpenCV学习笔记:像素值读取at()函数

最近在编程实现大津算法时,需要对图像的像素点进行操作,自然不可避免地要接触 at()函数 ,下面开始详细介绍。

1.语法

单通道图像: Mat.at<存储类型名称>(行,列)
多通道图像: Mat.at<存储类型名称>(行,列)[通道]

2.示例

Mat image;
image.at<uchar>(25,43);   //若image为单通道影像
image.at<Vec3b>(25,43)[2];    //若image为多通道影像

3.说明
(1)由于OpenCV中是按BGR的顺序表示的,因此对于RGB图像来说,[通道]取值为0时表示B波段(或分量),[通道]取值为1时表示G波段(或分量),[通道]取值为2时表示R波段(或分量)。
(2)按矩阵类型去选择<存储类型名称>:

如果矩阵类型为 CV_8U,则使用 Mat.at<uchar>(i,j) ;
如果矩阵类型为 CV_8S,则使用 Mat.at<schar>(i,j) ;
如果矩阵类型为 CV_16U,则使用 Mat.at<ushort>(i,j) ;
如果矩阵类型为 CV_16S,则使用 Mat.at<short>(i,j) ;
如果矩阵类型为 CV_32s,则使用 Mat.at<int>(i,j) ;
如果矩阵类型为 CV_32F,则使用 Mat.at<float>(i,j) ;
如果矩阵类型为 CV_64F,则使用 Mat.at<double>(i,j) ;

(3)具有单个索引(i)的变体可用于访问单行或单列二维矩阵的元素。例如,假设A是1N的二维浮点矩阵,B是M1的二维整型矩阵,当要访问矩阵A的第1行第4列的元素时,可以使用语句:

A.at<float>(3)

而不必要写成:

A.at<float>(0,3)

当要访问矩阵B的第4行第1列的元素时,可以使用语句:

B.at<int>(3)

而不必要写成:

B.at<int>(3,0)

(4)对于不是单行或单列的二维矩阵,若使用单个索引(i)是默认访问矩阵第一行的元素(即row=0)。例如:矩阵A为m*n的二维整型矩阵,那么

A.at<int>(4)         等价于          A.at<int>(0,4)

End & Enjoy!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

视觉闫小亘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值