opencv cv::Mat 定義 資料訪問
阿新 • • 發佈:2019-02-17
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);