opencv c++接口 cv::Mat使用

1、使用准备:

usingnamespace cv;

 

2、Mat的声明

Mat m = Mat(rows, cols, type);

Mat m = Mat(Size(width,height), type);

Mat A=Mat(3,4,CV_32FC1);
Mat B=Mat(4,3,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之间运算

Mat C =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);

float elem_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);

float elem_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)
template<typename _Tp>const _Tp& at(int y,int x)const;    // cxcore.hpp (870)
template<typename _Tp> _Tp& at(Point pt);                    // cxcore.hpp (869)
template<typename _Tp>const _Tp& at(Point pt)const;        // cxcore.hpp (871)
// defineded in cxmat.hpp (454-468)
typedefVec<float,2>Vec2f;// cxcore.hpp (254)

// we can access the element like this :
Mat m(Size(3,3), CV_32FC2 );
Vec2f& elem = m.at<Vec2f>( row , col );// or m.at<Vec2f>( Point(col,row) );
elem[0]=1212.0f;
elem[1]=326.0f;
float c1 = m.at<Vec2f>( row , col )[0];// or m.at<Vec2f>( Point(col,row) );
float c2 = m.at<Vec2f>( row , col )[1];
m.at<Vec2f>( row, col )[0]=1986.0f;
m.at<Vec2f>( row, col )[1]=326.0f;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值