二维数组和单通道Mat相关问题

  • Post category:C++

我们分别将二维数组第一行的首地址和单通道Mat第一行的首地址赋给指针:

1 int a[2][2] =
2     {
3         {1,2},
4         {3,4}
5     };
6 
7 int* p = a[0];
8 cout << p[2] << endl;

 

结果为3

1 Mat m = (Mat_<int>(2, 2) << 1,2,3,4);
2 
3 //获取指向第一行的指针
4 int* ptr = m.ptr<int>(0);
5 cout<<ptr[2]<<endl;

 

结果为3

说明当指针指向二维数组或则单通道Mat的某一行时,当指针的索引值超出这一行列数最大的下标,则会自动获取下一行的元素

 1 int* ptr = m.ptr<int>(0);
 2 
 3 //可以遍历所有元素,不必担心超出最大列
 4 for (int i = 0; i < m.total(); i++)
 5     {
 6         cout << ptr[i] << ",";
 7         if (i % m.cols)
 8         {
 9             cout << endl;
10         }
11     }