Opencv 向Mat对象添加另一行

Opencv 向Mat对象添加另一行,opencv,matrix,row,Opencv,Matrix,Row,我基本上是想在一个2x3单应矩阵上添加另一行,这个矩阵是我用findHomography函数发现的 Mat insert = (Mat_<double>(1,3)<<0 , 0 , 1); Mat homography = findHomography(features1 , features2 , CV_RANSAC); resize(affine , affine , Size(3,3)); homgraphy.push_back(in

我基本上是想在一个2x3单应矩阵上添加另一行,这个矩阵是我用findHomography函数发现的

    Mat insert = (Mat_<double>(1,3)<<0 , 0 , 1);
    Mat homography = findHomography(features1 , features2 , CV_RANSAC);
    resize(affine , affine , Size(3,3));
    homgraphy.push_back(insert);
    cout<<"Homography"<<" "<<homography;

但是当我打印单应时,第三行没有两个零,而是非常小的数字。我希望最后一行正好是{0,0,1}。我该怎么做呢?

如果您找不到损坏矩阵的原因,请尝试打印insert以查看它是否已更改,您可以使用

Mat insert = (Mat_<double>(1,3)<<0 , 0 , 1);
Mat homography = findHomography(features1 , features2 , CV_RANSAC);
resize(affine , affine , Size(3,3));
homgraphy.push_back(insert);     // ADD EXTRA ROW TO HOMOGRAPHY RESULT

homgraphy.at<Vec3d>(2,0) = Vec3d(0.0, 0.0, 1.0);  // OVERWRITE BOTTOM ROW OF MAT

您没有显示足够的上下文来确定问题。问题可能与打印单应性有关,例如,当我使用上述语句时,它会给我以下错误:损坏的双链接列表:0x000000000240ae70***。我如何更正它?听起来堆已经损坏了。这个消息来自C++运行时库,我想,而不是来自OpenCV。顺便说一句,你编译是为了调试吗?是的,我编译是为了调试。似乎最后一行已损坏。但它现在正在工作,因为我写得太多了。谢谢