声明:本内容转载自OpenCV 行列值与坐标的对应关系_seuStones的博客-CSDN博客,
行列与坐标系对应关系
行rows:Y (height)
列cols:X (width)
注意!注意!注意!
在Mat类型变量访问时下标是反着写的,即:按照(y, x)的关系形式访问,下面通过代码展示来说明这一点
-
#include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "opencv2/highgui.hpp" #include <iostream> using namespace cv; using namespace std; int main() { Mat mat_src = Mat::eye(3, 4, CV_8UC1); cout << "mat_src :" << endl; cout << mat_src << endl; cout << endl; cout << "Rows : " << mat_src.rows << endl; cout << "Cols : " << mat_src.cols << endl; //注: mat_src.at<float>(y, x), 下标关系为: y-x mat_src.at<float>(0, 2) = 2; mat_src.at<float>(2, 0) = 4; cout << endl; cout << "mat_src :" << endl; cout << mat_src << endl; return 0; }
2.关于 Mat数据类型指针ptr的使用
-
1. ushort d = depth_.ptr<ushort>(y)[x];
opencv中Mat数据类型指针ptr的使用方法,用来指定到某一像素的位置
cv::Mat image = cv::Mat(400, 600, CV_8UC1); //宽400,长600
uchar * data00 = image.ptr<uchar>(0);
uchar * data10 = image.ptr<uchar>(1);
uchar * data01 = image.ptr<uchar>(0)[1];
解释:
- 定义了一个Mat变量image。
- data00是指向image第一行第一个元素的指针。
- data10是指向image第二行第一个元素的指针。
- data01是指向image第一行第二个元素的指针。
ushort d = depth_.ptr<ushort>(y)[x];
是为了指定到depth_矩阵的y行第x列个像素!
假设现在你想得到第3行第42个像素的指针
uchar * data = image.ptr<uchar>(3)[41];