img.at <uchar>(i,j)是什么意思?

Har*_*ech 3 c++ opencv mat

这是一个基本问题.我不知道这个结构是什么.

img.at<uchar>(i,j) 
Run Code Online (Sandbox Code Playgroud)

本来应该是?我试图找到定义at,但无法理解它.这个语法意味着什么?

<uchar> 
Run Code Online (Sandbox Code Playgroud)

同样,意思是什么

img.at<cv::Vec3b>(row,col)[channel] 
Run Code Online (Sandbox Code Playgroud)

是的,Mat是矩阵类来操纵矩阵数据.我了解上述那些行为的行为却无法理解它们背后的理论?

这个语法是什么意思?

img.at<cv::Vec3b>
Run Code Online (Sandbox Code Playgroud)

sga*_*zvi 8

at是类的重载C++模板函数cv::Mat.

< >是调用C++模板的语法.

img.at<uchar>(i,j) 
Run Code Online (Sandbox Code Playgroud)

上面的行意味着,我们正在访问像素(i,j)并指定其数据类型unsigned char.

在简单的英语中,从索引获取1个像素,(i, j)即行号i和列号j.

img.at<cv::Vec3b>
Run Code Online (Sandbox Code Playgroud)

以上用于3通道图像.与第一个相同,但是获取所有三个通道的像素值.返回的值是一个Vec3b包含3个值的结构,每个通道对应一个值.

  • 为了完整起见,请注意(i,j)指(行,列)或笛卡尔坐标:(y,x).这是数学/矩阵表示法,而不是通常使用(x,y) - 或(列,行)的典型图像处理符号. (3认同)