方法一:
使用at<>()访问数据元素:
at<>()是一个模板方法,在使用时圆括号内需要写访问的row和col,尖括号内需要写该row和col对应的数据。比如,对于单通道的图像,row行和col列处只有一个数据。因此,只需要写基本数据类型即可,比如uchar,float等。当时对于BGR图像这种三通道的数据,row行和col列处包含三个数据(B、G、R的值),因此需要一个向量来接收数据,根据数据特点选用例如Vec3b,Vec3f等。
int main()
{
//单通道
Mat m(10, 10, CV_32FC1);
randu(m, 1, 10);//随机填充该矩阵
cout << m.at<float>(3, 3) << endl;
//多通道
Mat mm(4, 4, CV_32FC3);
randu(mm, 1, 10);
cout << mm.at<Vec3f>(3, 3) << endl;
Vec3f p = mm.at<Vec3f>(3, 3);
cout << p[0] << ' ' << p[1] << ' ' << p[2] << endl;
return 0;
}
方法二:
使用ptr<>()访问数据元素:
ptr<>()也是一个模板方法,在使用时圆括号内需要写访问的row,该方法会返回一个指针数据,指针指向该行的起始数据,至于该方法返回一个