这是一个基本问题。我不知道这个结构是什么。
img.at<uchar>(i,j)
意味着什么?我试着找到 at
的定义,但无法理解。这个语法意味着什么?
<uchar>
同样,
的含义img.at<cv::Vec3b>(row,col)[channel]
是的,Mat
是用于处理矩阵数据的矩阵类。我了解上述那些行为的行为却无法理解它们背后的理论?
这种语法是什么意思?
img.at<cv::Vec3b>
答案 0 :(得分:7)
at
是类cv::Mat
的重载C ++模板函数。
< >
是调用C ++模板的语法。
img.at<uchar>(i,j)
上述行表示我们正在访问像素(i,j)
并将其数据类型指定为unsigned char
。
用简单的英语,从索引(i, j)
获取1个像素,即行号 i ,列号 j 。
img.at<cv::Vec3b>
以上用于3通道图像。与第一个相同,但是获取所有三个通道的像素值。返回的值是Vec3b
结构,包含3个值,每个通道一个。