[英]OpenCV std::vector< cv::Point2f > to cv::Mat
[英]opencv: is Mat(vector<Point2f>) yelding a wrong matrix header?
我认为为Mat(vector)生成的标头是错误的,它将矩阵打印为Nx2矩阵,但是col属性设置为2。
我不确定这是否是需要此新矩阵副本的任何操作的原因,否则只是子矩阵会失败。
一个简单的例子就是在这个新矩阵上获得一个选择:(Range(0,N),Range(0,1))会选择前两列,但只会选择第一列(范围的第二个成员)运算符是唯一的)
我看不到您的问题,实际上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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.