1. 程式人生 > >opencv cv::Mat 定義 資料訪問

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);