opencv:Mat(vector<Point2f>)大喊大叫是错误的矩阵头吗?

opencv: is Mat(vector<Point2f>) yelding a wrong matrix header?

本文关键字:错误 阵头 大喊大叫 gt Mat vector lt opencv Point2f      更新时间:2023-10-16

我认为为Mat(向量)生成的头是错误的,它将矩阵打印为Nx2矩阵,但是col属性设置为2。

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

一个简单的例子是获得对这个新矩阵的选择:(Range(0,N),Range(0,1))将选择前两列,但是,只选择第一个(范围运算符的第二个成员除外)

我看不出你的问题,实际上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]