转载https://blog.csdn.net/wangyang20170901/article/details/79006836
Mat类型数据的初始化方法可以有以下两种:
1、直接初始化
- Mat_<float> T_L = (Mat_<float>(3, 1) << -518.97666, 01.20629, 9.14632);
- float A[4][3] = { 0 };
- Mat A_mat = Mat(4, 3, CV_32F, A);//如果是double类型用64
注意:初始化数组时常遇到“无法显示标识符”的提示,可能用了中文的逗号;
Mat转化为数组可以用以下两种方法:1、Mat中提供ptr函数
用ptr访问任意一行像素的首地址,然后当做指针来读取这一行的数据,适合一行一行的横向访问
- Mat M1;
- float* row1 = M1.ptr<float>(0);//获取第一行首地址
- float b[4] = { 0 };
- for(int i=0;i<4;i++)
- {
- b[i]=row1[i];//第一行的第i个数赋给b[i]
- }
直接给i,j赋值就可以随意访问图像中任何一个像素,其中j表示第j行,i表示该行第i个像素。如果访问所有的变量,效率很低。
- M1.at<float>(2, 0)//第三行第一个元素的值