2014-09-12 79 views
0

我相信对于垫(载体)产生的报头是错误的, 它打印矩阵作为矩阵NX2,然而,山口属性被设置为2opencv:是mat(矢量<Point2f>)喊错了矩阵头?

我不确认是否为任何原因需要这个新矩阵的副本或只是一个子矩阵的操作将失败。

一个简单的例子将获得对这个新矩阵的选择: (范围(0,N),范围(0,1))将选择前两列,而相反, 只有第一个被选中范围运算符的第二个成员是排他性的)

回答

0

我没有看到你的问题,实际上Mat(vector<Point2f>)是一个N行,1列,2行的矩阵,并且范围上的选择返回N首先

vector<Point2f> cp; 
cp.push_back(Point2f(1,1)); 
cp.push_back(Point2f(2,2)); 
cp.push_back(Point2f(3,3)); 

Mat m(cp); 


cerr << m.rows << " " << m.cols << " "<< m.channels() << endl; 
cerr << m << endl; 

int N=2; 
Mat m2 = m(Range(0,N), Range(0,1)); 

cerr << m2.rows << " " << m2.cols << " "<< m2.channels() << endl; 
cerr << m2 << endl; 

3 1 2 
[1, 1; 2, 2; 3, 3] 
2 1 2 
[1, 1; 2, 2] 
+0

非常感谢。我没有使用mat容器一个月,我只是看深度标志而不是寻找唯一定义的类型标志; – user66296 2014-09-13 15:27:30