私は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 エラー: アサーションに失敗しました (type == B<> && > in unknown function, file .. ....\src\ opencv\modules\core\src\matmul.cpp、711 行目"
私はそれを調べて、この質問Opencv Matrix multiplicationで同様の問題を見つけました が、答えが言ったことを実行しようとしました(行列タイプを変更します)、それでも同じエラーが発生しました。
Gemm を使用して行列の乗算を実行しようとしましたが、同じエラーが表示されます。
私は本当にいくつかの助けを借りることができました!前もって感謝します.