zoukankan      html  css  js  c++  java
  • main

    int main(/*const IplImage* image_l,const IplImage *image_r*/)
    {
    //assert(argc==3);
    const char* left_filename="C:\\OpenCV2.1\\samples\\c\\scene_l.bmp";
    const char* right_filename="C:\\OpenCV2.1\\samples\\c\\scene_r.bmp";
    clock_t begin,end;
    float time;
    int count=0;
    int i;
    MIpoint *m=(MIpoint*)malloc(1000*sizeof(MIpoint));
    FHParam param={4/*octaves*/,4/*intervals*/,2/*init_sample*/,0.0001f/*thres*/};/////////////参数设定
    mImage *img_l;
    mImage *img_r;
    image_left = cvLoadImage(left_filename);
    image_right = cvLoadImage(right_filename);

    if (image_right==NULL || image_right==NULL) return -1;
    CvSize image_size = cvGetSize(image_left);
    img_l=ConvertIplImage(image_left);
    img_r=ConvertIplImage(image_right);
    begin=clock();
    SurfImageMatch(img_l,img_r,&param,m,&count);
    end=clock();
    time=(float)(end-begin);
    printf("time need:%gms\n",time);
    CvMat* left_points_mat = cvCreateMat(count, 2, CV_32F);
    CvMat* right_points_mat = cvCreateMat(count, 2, CV_32F);
    for (i=0; i<count; ++i)
    {
    cvmSet(left_points_mat, i, 0, m[i].MIp1.x);
    cvmSet(left_points_mat, i, 1, m[i].MIp1.y);
    cvmSet(right_points_mat, i, 0, m[i].MIp2.x);
    cvmSet(right_points_mat, i, 1, m[i].MIp2.y);
    }

    // 4. rectify
    double _K[] = {800, 0, image_size.width/2, 0, 800, image_size.height/2, 0, 0, 1};
    CvMat K = cvMat(3,3, CV_64F, _K);
    // 4.1 Rotation and translation
    double _rot[9], _tran[3], _R1[9], _R2[9], _P1[12], _P2[12], _F[9];
    decompose_fundamental_matrix(_K, _F, _rot, _tran, left_points_mat, right_points_mat);

    // 4.2 homography transform
    stereo_rectify(_K, image_size, _rot, _tran, _R1, _R2, _P1, _P2);

    CvMat R1 = cvMat(3,3, CV_64F, _R1);
    CvMat R2 = cvMat(3,3, CV_64F, _R2);
    CvMat P1 = cvMat(3,4, CV_64F, _P1);
    CvMat P2 = cvMat(3,4, CV_64F, _P2);

    // 5. warp images
    double _KBig[] = {400, 0, image_size.width, 0, 400, image_size.height, 0, 0, 1};
    CvSize bigsize = cvSize(image_size.width*2, image_size.height*2);
    CvMat KBig = cvMat(3,3, CV_64F, _KBig);
    CvMat* mx1 = cvCreateMat( image_size.height*2,
    image_size.width*2, CV_32F );
    CvMat* my1 = cvCreateMat( image_size.height*2,
    image_size.width*2, CV_32F );
    CvMat* mx2 = cvCreateMat( image_size.height*2,
    image_size.width*2, CV_32F );
    CvMat* my2 = cvCreateMat( image_size.height*2,
    image_size.width*2, CV_32F );
    cvInitUndistortRectifyMap(&K,NULL,&R1,&KBig,mx1,my1);
    cvInitUndistortRectifyMap(&K,NULL,&R2,&KBig,mx2,my2);

    IplImage* stereo_left = cvCreateImage(bigsize, 8, 3);
    IplImage* stereo_right = cvCreateImage(bigsize, 8, 3);

    cvRemap(image_left, stereo_left, mx1, my1);
    cvRemap(image_right, stereo_right, mx2, my2);

    cvSaveImage("stereo_left.jpg", stereo_left);
    cvSaveImage("stereo_right.jpg", stereo_right);
    //system("pause");
    return 0;
    }

  • 相关阅读:
    debian 中安装GIT
    多核处理器 利用多线程 加速 编译内核 速度
    ubuntu下安装中文输入法(乱码等问题)
    ubuntu 10.04源 更新源列表
    php empty,isset,is_null比较(差异与异同) Leone
    Win 7 各版本的含义 Leone
    Atitit DbServiceV4qb9 数据库查询类库v4 新特性
    Atitit 图像处理之仿油画效果 Oilpaint油画滤镜 水彩画 漫画滤镜 v2
    Atitit 多继承实现解决方案 java c#
    Atitit 基于图片图像 与文档混合文件夹的分类
  • 原文地址:https://www.cnblogs.com/mysunnyday/p/2234768.html
Copyright © 2011-2022 走看看