OpenCv cv::Mat类用法1
转载地址:http://www.360doc.com/content/13/0415/16/10724725_278435687.shtml
1、使用准备:
using namespace cv; 2、Mat的声明 Mat m=Mat(rows, cols, type); Mat m=Mat(Size(width,height), type); Mat A=Mat(3,4,CV_32FC1); 3、Mat赋值 vector<Point3f>v;//suppose it is already full Mat m1=Mat(v,true);//boolean value true is necessary in order to copy data from v to m1 CvMat *p1=====?? Mat m2=Mat(p1); 4、Mat之间运算 MatC=2*A*B; Mat C=C.inv();//Now C is its own inverse matrix Mat D=A.t();//D is the transposed matrix of A Mat a=Mat(4,1, CV_32FC3);//a is 4x1, 3 channels Mat b=a.reshape(1);//b is 4x3, 1 channel 5、单通道Mat元素读写 Mat a=Mat(4,3, CV_32FC1); floatelem_a=a.at<float>(i,j);//access element aij, with i from 0 to rows-1 and j from 0 to cols-1 Point p=Point(x,y); floatelem_a=a.at<float>(p);//Warning: y ranges from 0 to rows-1 and x from 0 to cols-1 6、多通道Mat元素读写 template<typename _Tp> _Tp& at(int y,int x); // cxcore.hpp (868) // we can access the element like this :
7.选取Mat上指定区域方法 Mat src; Rect rect; Mat dst = src(rect); 或者Mat dst(src,rect);
注意:cv::Mat A; A.row(i) = A.row(j); // 错误 A.row(i) = A.row(j) + 0; // 正确
OpenCV cv::Mat类操作
首先还是要感谢箫鸣朋友在我
《OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解》的留言,告诉我
M.at<float>(3, 3)在Debug模式下运行缓慢,推荐我使用M.ptr<float>(i)此类方法。这不禁勾起了我测试一下的冲动。下面就为大家奉上我的测试结果。
我这里测试了三种操作Mat数据的办法,套用流行词,普通青年,文艺青年,为啥第三种我不叫2b青年,大家慢慢往后看咯。
实验代码如下:
测试结果:
|