OpenCV中Mat矩阵data数据的存储方式和二维数组不一致,二维数组按照行优先的顺序依次存储,而Mat中还有一个标示行步进的变量Step。使用Mat.ptr<DataTyte>(row) 行指针的方式定位到每一行,可快速遍历矩阵。例程如下:
1 std::cout << "The inverse matrix of K is:" << std::endl; 2 for(int i=0;i<3;i++) 3 { 4 float* data = mInvK.ptr<float>(i);// mInvK.ptr 对应行指针 5 for (int j=0;j<3;j++) 6 { 7 std::cout << *data++ << "\t"; 8 } 9 std::cout << std::endl; 10 }
其实只要显示Mat矩阵data数据的话,不需要通过遍历的方式,以上只为说明遍历方法,对元素操作只有输出打印。显示Mat M矩阵,可以直接 std::cout << M << std::endl