#if 0
void xyp2ipmp(cv::Mat& xyp, cv::Mat& ipmp, cv::Mat& xylim, Size& sz){

    //xylimist_[0]-latteral/xylimist_[1]-longitudinal...
    //ipmp-row0-cols-latteral/ipmp-row1-rows-longitudinal...

    , xmax = , ymin = , ymax = ;
    minMaxLoc(xylim.row(), &xmin, &xmax);
    minMaxLoc(xylim.row(), &ymin, &ymax);

    double stepcol = (xmax - xmin) / sz.width;
    double steprow = (ymax - ymin) / sz.height;

    cv::Mat tempx = cv::Mat::ones(, xyp.cols, CV_64FC1) * xmin;
    cv::Mat tempy = cv::Mat::ones(, xyp.cols, CV_64FC1) * ymax;

    ipmp = cv::Mat::zeros(, xyp.cols, CV_64FC1);
    ipmp.rowRange(, ) = ( xyp.rowRange(, ) - tempx ) / stepcol;
    ipmp.rowRange(, ) = ( tempy - xyp.rowRange(, ) ) / steprow;
    ; i < xyp.cols; i++ )
    {
        , i);
        if( y > ymax){
            ipmp.at<, i) = ymax;
        }
    }

}
#endif
#if 0
    //IPM-parameters...
    ;//left
    ;//top-greater than 320...
    ;//right...
    ;//bottom...
    ] = { left_upper_x, right_down_x, left_upper_x, right_down_x,
                           left_upper_y, left_upper_y, right_down_y, right_down_y };
    cv::Mat uvlmt = cv::Mat(, , CV_64FC1, uvlimist);

     //I2G
    cv::Mat xylimit;
    imagetoground(uvlmt, xylimit, h, roll, pitch, camera_param_KK);
     //G2I
    cv::Mat uvgd;
    cv::Size sz = cv::Size(PROB_W, PROB_H);//Size(srcimage.cols, srcimage.rows)
    groundtoimage(xylimit, uvgd, sz, h, roll, pitch, camera_param_KK );
#endif
#if 1
        //IPM...
        cv::Mat outimage, coord;
        src2ipm( prob, uvgd, outimage, coord, sz, h, roll, pitch, camera_param_KK );
        outimage.convertTo(outimage, CV_8UC1);
        cv::Mat ipm3 = cv::Mat::zeros(PROB_H, PROB_W, CV_8UC3);
        cv::cvtColor(outimage, ipm3, COLOR_GRAY2BGR);

        //
        //cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_8UC1);
        cv::Mat uvp = cv::Mat::zeros(, probp.size(), CV_64FC1);//data-type...
        ; i <probp.size(); i++ )
        {
            uvp.at<, i) = probp[i].x;//cols-width.
            uvp.at<, i) = probp[i].y;//rows-height.
            //std::cout <<  uvp.at<double>(0, i) << "-----" << probp[i].x <<std::endl;
            //std::cout <<  uvp.at<double>(1, i) << "-----" << probp[i].y <<std::endl;
        }
        cv::Mat ipmps, xyp;
        //std::cout << "uvp:" << uvp << std::endl;
        imagetoground(uvp, xyp, h, roll, pitch, camera_param_KK);
        xyp2ipmp(xyp, ipmps, xylimit, sz);
        ipmps.convertTo(ipmps, CV_32SC1);
        ; i <probp.size(); i++ )
        {
            cv::Point ipmp;
            ipmp.x = ipmps.at<, i);
            ipmp.y = ipmps.at<, i);
            )//-barrier
            {
                cv::circle(ipm3, ipmp, , cv::Scalar(, , ), -); //
                //cv::putText(orig, std::to_string(i), pt, CV_FONT_NORMAL, 0.1, cv::Scalar(255, 255, 255));
            }
            )//-undifined
            {
                cv::circle(ipm3, ipmp, , cv::Scalar(, , ), -); //
                //cv::putText(orig, std::to_string(i), pt, CV_FONT_NORMAL, 0.1, cv::Scalar(255, 255, 255));
            }

        }

        cv::imshow("ipmp", ipm3);
        cv::waitKey();//unit-ms.
        sprintf(output_path,"./ipmp/00000%05d.png",cnt);
        cv::imwrite(output_path, ipm3);
#endif

end...

IPM的更多相关文章

  1. IPM简介

    1.IPM包含3个函数. image2ground:将图像中的像素点(u, v)对应到地平面上(Z=1)IPM的像素点(x, y): ground2image:将IPM中的像素点(x, y)基于IPM ...

  2. 【计算机视觉基础】IPM

    IPM code #if 0 void xyp2ipmp(cv::Mat& xyp, cv::Mat& ipmp, cv::Mat& xylim, Size& sz){ ...

  3. 求n个数中前k个数,按之前的顺序输出(HK IPM)

    For smaller k: #include <cstdio> #include <cstdlib> #include <cstring> #include &l ...

  4. IPM的修炼之路

    总结了一下最近一年半来看到的产品经理方面的素养资料. 产品经理: 必备素质:市场洞察,抽象概括,创新想象,心思细腻,热爱产品,具备一定的企业家精神等. 是通才:市场,项目,设计,管理,用户,统计,心理 ...

  5. uva 1599 ideal path(好题)——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGYAAAODCAYAAAD+ZwdMAAAgAElEQVR4nOy9L8/0ypH/Pa8givGiyC

  6. android 性能分析案例

    本章以实际案例分析在android开发中,性能方面的优化和处理.设计到知识点有弱引用,memory monitor,Allocation Tracker和leakcanary插件. 1.测试demo ...

  7. android 传感器应用

    本章讲述Android开发中,传感器应用相关的知识点. 1.功能需求 做一个基于传感器的水平尺应用. 2.软件实现

  8. spring-Formatter(格式化器)-validator(验证器)-错误信息定制

    项目结构

  9. Python之路【第二十二篇】CMDB项目

    浅谈ITIL TIL即IT基础架构库(Information Technology Infrastructure Library, ITIL,信息技术基础架构库)由英国政府部门CCTA(Central ...

随机推荐

  1. [ios]关于gps以及坐标系

    参考:http://mobile.51cto.com/iphone-387413.htm 美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际共识.但在我国 ...

  2. socket编程之accept()函数【转载】

    名称 accept() 接收一个套接字中已建立的连接 使用格式 #include <sys/types.h> #include <sys/socket.h> int accep ...

  3. spring boot 开发 提交form表单出错

    提交表单时,字段有的没有值,springboot 会报错. org.springframework.validation.BindException: org.springframework.vali ...

  4. Codeforces 820B - Mister B and Angle in Polygon

    820B - Mister B and Angle in Polygon 思路: 由于正多边形以某个顶点分成的三角形后以这个点为顶点的角都相等,所以可以确定两个点为相邻点,只要再找一个点就够了. 证明 ...

  5. 小行星碰撞 Asteroid Collision

    2018-08-07 11:12:01 问题描述: 问题求解: 使用一个链表模拟栈,最后的状态一定是左侧全部是负值,表示的是向左飞行,右侧的全部是正值,表示的是向右飞行. 遍历整个数组,对于每个读到的 ...

  6. Java 常用对象-BigDecimal

    2017-11-02 22:03:14 BigDecimal类:不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成.如果为 ...

  7. C#快速生成数据数组

    需求:生成一个数组,数组里面的值为1-100实现方式:拿到这个需求很多朋友可能会想到一个快速实现的方式如下: ]; ;i<=;i++){ arr[i]=i; } 但是C#提供了一个快速生成的方式 ...

  8. asp.net一般处理程序利用反射定位方法

    asp.net的一般处理程序我想大家用得都不少,经常会如下如下的代码: using System; using System.Collections.Generic; using System.Lin ...

  9. Java知识集锦

    Java知识集锦 一.Java程序基础 1.1 开发和运行环境 1.2 Java语言概述 二.Java语法基础 2.1 基础类型和语法 2.2 对象和类型 2.3 包和访问控制 三.数据类型及类型转换 ...

  10. Nikita and stack CodeForces - 756C (栈,线段树二分)

    大意: 给定m个栈操作push(x)或pop(), 栈空时pop()无作用, 每个操作有执行的时间$t$, 对于每个$0 \le i \le m$, 输出[1,i]的栈操作按时间顺序执行后栈顶元素. ...