我正在尝试使用 opencv 进行 3D 重建,并且我几乎遵循书中的所有步骤:Robert Laganière 的 OpenCV 2 Computer Vision Application Programming Cookbook。
当我试图找到基本矩阵时,我的问题就出现了。我这样做:
Mat fundemental= ransacTest(symMatches,keypoints1, keypoints2, outmatches);
//ransacTest function by Computer Vision Application Programming Cookbook
cout<<endl<<fundemental<<endl;
Mat K=m_camera_data->get_K();
//get_K() function defined previously
cout<<K<<endl;
cout<<"K.T"<<K.t()<<endl;
Mat_<double> E = K.t() *fundemental* K; // Error
函数 ransacTest 和 get_K() 之前已定义,它们似乎工作正常。我的基本矩阵如下
-7.65924601845777e-006 0.0052097327886 -0.179203748284864
-0.005202223611495075 -8.913278071309e-006 -0.5024237005766097
0.1843335279902164 0.4908219843516384 1
我的K矩阵如下
382.5 0 160
0 0 120
0 0 1
K的转置正确完成。当我尝试获取基本矩阵 E 时出现问题。运行程序“OpenCV Error: Assertion failed (type == B<> && > in unknown function, file .. ....\src\ opencv\modules\core\src\matmul.cpp,第 711 行"
我查了一下,在这个问题Opencv Matrix multiplication中发现了一个类似的问题, 但是我尝试按照答案所说的去做(更改矩阵类型),但仍然遇到相同的错误。
我也尝试使用 Gemm 进行矩阵乘法,但出现相同的错误。
我真的可以使用一些帮助!在此先感谢。