findEssentialMat


基于opencv3的本质矩阵估计算例
资源截图
代码片段和文件信息
/**************************************************************
* an example to estimate essential matrix and relative pose of 
* binocular vision sensor using the API function of opencv3.0.0
*  
* by jah10527@126.com
* May 1st 2016

***************************************************************/


#include 
#include 

using namespace cv;
using namespace std;


int main()
{
int i point_count = 54;
vector rpoints(point_count);
vector lpoints(point_count);

Mat Ml(33CV_64F);
Mat Mr(33CV_64F);

    FileStorage fs(“camera_l.yml“ FileStorage::READ);
    if( !fs.isOpened() )
        return -1;
    fs[“camera_matrix“] >> Ml;
fs.release(); 

fs.open(“camera_r.yml“ FileStorage::READ);
    if( !fs.isOpened() )
        return -1;
    fs[“camera_matrix“] >> Mr;
fs.release(); 

cout << “Mr:“ << endl << Mr << endl;
cout << “Ml:“ << endl << Ml << endl;

Mat rim=imread(“fight01.jpg“ IMREAD_GRAYSCALE);
Mat lim=imread(“feft01.jpg“ IMREAD_GRAYSCALE);
findChessboardCorners( rim Size(69) rpoints
                    CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_FAST_CHECK | CALIB_CB_NORMALIZE_IMAGE);
findChessboardCorners( lim Size(69) lpoints
                    CALIB_CB_ADAPTIVE_THRESH | CALIB_CB_FAST_CHECK | CALIB_CB_NORMALIZE_IMAGE);
/* cout << “right:“ << endl;
for (i=0;i cout << rpoints[i] << endl;
cout << “left:“ << endl;
for (i=0;i cout << lpoints[i] << endl;*/
cornerSubPix( rim rpoints Size(88)
            Size(-1-1) TermCriteria( TermCriteria::EPS+TermCriteria::COUNT 30 0.1 ));
cornerSubPix( lim lpoints Size(88)
            Size(-1-1) TermCriteria( TermCriteria::EPS+TermCriteria::COUNT 30 0.1 ));

for (i=0;i {
rpoints[i].x = (rpoints[i].x-*((double*)Mr.data+2))/ *((double*)Mr.data);
rpoints[i].y = (rpoints[i].y-*((double*)Mr.data+5))/ *((double*)Mr.data+4);
lpoints[i].x = (lpoints[i].x-*((double*)Ml.data+2))/ *((double*)Ml.data);
lpoints[i].y = (lpoints[i].y-*((double*)Ml.data+5))/ *((double*)Ml.data+4);
// cout << “r:“ << rpoints[i] << endl;
// cout << “l:“ << lpoints[i] << endl;
}

Mat E_mat =findEssentialMat(rpoints lpoints 1 Point2d(0 0) RANSAC 0.999 1.f);
cout << “E:“ << endl << E_mat << endl;

/* Mat rr(31CV_64F);
Mat ll(13CV_64F);
*((double*)rr.data+2)=1;
*((double*)ll.data+2)=1;
for (i=0;i<8;i++){
*((double*)rr.data) = rpoints[i].x;
*((double*)rr.data+1) = rpoints[i].y;
*((double*)ll.data) = lpoints[i].x;
*((double*)ll.data+1) = lpoints[i].y;
cout << ll*E_mat*rr << endl;
cout << rr.t()*E_mat*ll.t() << endl;
}
Mat R1 R2 t;
decomposeEssentialMat(E_mat R1 R2 t);
cout << “R1:“ << endl << R1 << endl;
cout << “R2:“ << endl << R2 << endl;
cout << “t:“ << endl << t << endl;*/

Mat R t;
recoverPose(E_mat rpoints lpoints R t);
cout << “t:“ << endl << t <<

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-05-02 08:39  ex_findEssentialMat
     目录           0  2016-05-02 08:39  ex_findEssentialMatCameraCalibration
     文件       95208  2001-11-13 16:01  ex_findEssentialMatCameraCalibrationCalib_Results_left.mat
     文件       94424  2001-11-13 16:05  ex_findEssentialMatCameraCalibrationCalib_Results_right.mat
     文件         503  2016-05-02 08:30  ex_findEssentialMatCameraCalibrationMakefile
     文件       61108  2016-05-02 08:30  ex_findEssentialMatCameraCalibrationcalibration
     文件       20721  2016-05-01 21:40  ex_findEssentialMatCameraCalibrationcalibration.cpp
     文件       62968  2016-05-02 08:30  ex_findEssentialMatCameraCalibrationcalibration.o
     文件       30322  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationcamera_l.yml
     文件       30325  2016-05-01 21:52  ex_findEssentialMatCameraCalibrationcamera_r.yml
     文件       87612  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft01.jpg
     文件       89129  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft02.jpg
     文件       91320  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft03.jpg
     文件       79951  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft04.jpg
     文件       89192  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft05.jpg
     文件       89394  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft06.jpg
     文件       92238  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft07.jpg
     文件       89522  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft08.jpg
     文件       86155  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft09.jpg
     文件       85327  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft10.jpg
     文件       87419  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft11.jpg
     文件       81721  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft12.jpg
     文件       87796  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft13.jpg
     文件       87444  2016-05-01 21:50  ex_findEssentialMatCameraCalibrationfeft14.jpg
     文件       82765  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight01.jpg
     文件       84254  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight02.jpg
     文件       86891  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight03.jpg
     文件       77002  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight04.jpg
     文件       81363  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight05.jpg
     文件       84926  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight06.jpg
     文件       86331  2016-05-02 08:34  ex_findEssentialMatCameraCalibrationfight07.jpg
............此处省略60个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)