opencv cv::Mat 定义 数据访问

opencv 的mat经常用,无奈人老记性不好,每次用的时候总忘记然后出bug,总结下常用的东西:

1.定义Mat

定义Mat并初始化

cv::Mat R;
//给R初始化为3*3矩阵:
R(Mat::eye(3, 3, CV_64F));
//给R初始化为3*1向量:
R(Mat::zeros(3, 1, CV_64F));

2. 访问数组Mat的不同方法(按效率从高到低排列)、

2.1 指针按照向量形式访问

float* myptr = (float*)R.data;
for (int j = 0; j < 9; j++)
{
    cameraBuf.RMat[j] = myptr[j];
}
 

2.2 指针按照逐行访问


如果是向量,可以这样访问:

cv::Mat T; //3*1向量
for (int k = 0; k < 3; k++)
{
    cameraBuf.TVec[k] = *(T.ptr<float>(k));
}
如果是矩阵,则要多一层循环,即:
 

2.3 逐个元素访问

for (int i = 0; i < h, i++)
  for (int j = 0; j < w; j++)
     float a = R.at<float>(i, j);


猜你喜欢

转载自blog.csdn.net/foreverhehe716/article/details/80621066