1.利用at<>()成员函数访问数组元素
最基础的直接访问手段是通过模板成员函数at<>(),对数组元素进行访问。因为是模板函数,所以该函数可以接受各种类型和维度的参数。使用该函数访问数组元素的例子如下:
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
int main()
{
Mat m_1 = cv::Mat::eye(10,10,CV_32FC1);
Mat m_2 = cv::Mat::eye(3, 3, CV_32FC3);
int sz[] = { 3, 3, 3 };
Mat m_3(3, sz, CV_32FC3, Scalar::all(0));
//part one
printf(
"Float Element (3,3) is %f\n",
m_1.at<float>(3, 3)
);
//part two
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf(
"Float Element (x,y)=(%d,%d) is (C0,C1,C2)=(%f,%f,%f)\n",
i,
j,
m_2.at<cv::Vec3f>(i, j)[0],
m_2.at<cv::Vec3f>(i, j)[1],
m_2.at<cv::Vec3f>(i, j)[2]
);
}
}
//part three
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
for (int k = 0; k < 3; k++)
{
printf(
"Float Element (x,y,z)=(%d,%d,%d) is (C0,C1,C2)=(%f)\n",
i,
j,
k,
m_3.at<cv::Vec3f>(i, j,k)[0],
m_3.at<cv::Vec3f>(i, j,k)[1],
m_3.at<cv::Vec3f>(i, j,k)[2]
);
}
}
}
getchar();
return 0;
}
结果分析:上述代码有三个部分。
部分一:访问的是二维