2013-07-24 7 views
1

opencv를 사용하여 3D 재구성을 시도하고 있으며이 책의 모든 단계를 거의 따르고 있습니다. OpenCV 2 Computer Vision Application Programming Cookbook, Robert Laganiere.필수 행렬 찾기 (행렬 곱셈 오류)

필수 매트릭스를 찾으려고 할 때 문제가 발생합니다. 나는 이렇게한다 :

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 행렬 K의 트랜스가 제대로되어 다음

382.5 0 160 

0  0 120 

0  0  1 

입니다. 문제가 발생했습니다. 프로그램을 실행할 때이 오류가 발생합니다. "OpenCV 오류 : 어설 션이 실패했습니다 (유형 == B <> & &> 알 수없는 함수, 파일 ...). \ SRC \ OpenCV의 \ 모듈 \ 코어 \의의 src \의 matmul.cpp, 나는 그것을 보면서 나는이 질문 Opencv Matrix multiplication 에 비슷한 문제를 발견하지만 대답은 (행렬을 변경 한 말하려고 노력 라인 711 "

types)와 같은 오류가 발생했지만 여전히 동일한 오류가 발생했습니다.

Gemm을 사용하여 행렬 곱셈을 시도했지만 동일한 오류가 나타납니다.

정말 도움이 될 수 있습니다! 미리 감사드립니다.

답변

0

K 유형이 이중 (CV_64F)이 아닌 것처럼 들립니다. 아마 그것은 float (CV_32F)입니다. K.type() == CV_64F을 확인하십시오.

+0

방금 ​​확인한 결과 플로트입니다! 고맙습니다! 방금 문제가 해결되었습니다. 그것은 내 기본과 내 K에 실제로 행렬 형 문제였습니다. 내가 지금했던 모든 것은 매회 Mat_ 처럼 근본적으로 선언되었다. – user2606677