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

我们分别将二维数组第一行的首地址和单通道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 }

 

作者:小凉拖原文地址:https://www.cnblogs.com/Sandals-little/p/16725569.html

%s 个评论

要回复文章请先登录注册