我相信为Mat(向量)生成的标题是错误的, 它将矩阵打印为Nx2矩阵,但col属性设置为2。
我没有确认是否有任何操作需要这个新矩阵的副本或只是一个子矩阵失败的原因。
一个简单的例子就是获得对这个新矩阵的选择: (范围(0,N),范围(0,1))将选择前两列但相反, 只选择第一个(范围运算符的第二个成员是独占的)
答案 0 :(得分:0)
我没有看到你的问题,实际上Mat(vector<Point2f>)
是一个N行,1-col,2-chan矩阵,并且范围内的选择返回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]