1. cv::Size sz = cv::Size(PROB_W, PROB_H);//Size(srcimage.cols, srcimage.rows)
  2. groundtoimage(xylimit, uvgd, sz, h, roll, pitch, camera_param_KK );
    sz.height
    sz.width
  1. //groundtoimage...
  2. void groundtoimage( cv::Mat& xylimt, cv::Mat& uvgrid, cv::Size& sz, double ht, double roll, double pitch, double* camera_param_KK )
  3. {
  4. //std::cout << "sz.height: " << sz.height << " ------ sz.width: " << sz.width << std::endl;
  5. int height = (int)(ht*1000); //unit-mm.
  6. double fx = camera_param_KK[0];
  7. double fy = camera_param_KK[4];
  8. double cx = camera_param_KK[2];
  9. double cy = camera_param_KK[5];
  10.  
  11. double c1 = cos(pitch*PI / 180);
  12. double s1 = sin(pitch*PI / 180);
  13. double c2 = cos(roll*PI / 180);
  14. double s2 = sin(roll*PI / 180);
  15. cv::Mat Tx = (cv::Mat_<double>(3, 3) << 1, 0, 0,
  16. 0, c1, s1,
  17. 0, -s1, c1);
  18. cv::Mat Tf = (cv::Mat_<double>(3, 3) << fx, 0, cx,
  19. 0, fy, cy,
  20. 0, 0, 1);
  21.  
  22. double xmin = 0, xmax = 0, ymin = 0, ymax = 0;
  23. minMaxLoc(xylimt.row(0), &xmin, &xmax);
  24. minMaxLoc(xylimt.row(1), &ymin, &ymax);
  25. //std::cout << "xmin: " << xmin << " xmax: " << xmax << std::endl;
  26. //std::cout << "ymin: " << ymin << " ymax: " << ymax << std::endl;
  27. double steprow = (ymax - ymin) / sz.height;
  28. double stepcol = (xmax - xmin) / sz.width;
  29. cv::Mat xygrid = cv::Mat::zeros(2, sz.height*sz.width, CV_64FC1);
  30.  
  31. float y = ymax;
  32. for (int i = 1; i <= sz.height; i++)
  33. {
  34. float x = xmin;
  35. for (int j = 0; j < sz.width; j++)
  36. {
  37. xygrid.at<double>(0, (i - 1)*sz.width + j) = x;
  38. xygrid.at<double>(1, (i - 1)*sz.width + j) = y;
  39. x = x + stepcol;
  40. }
  41. y = y - steprow;
  42. }
  43.  
  44. cv::Mat temp1, temp2;
  45. xygrid.rowRange(0, 2).copyTo(temp2);
  46. temp1 = cv::Mat::ones(1, temp2.cols, CV_64FC1)*(-height);
  47. cv::vconcat(temp2, temp1, temp2);
  48.  
  49. cv::Mat T = Tf*Tx;
  50. temp2 = T * temp2;
  51.  
  52. temp2.row(0) = temp2.row(0) / temp2.row(2);
  53. temp2.row(1) = temp2.row(1) / temp2.row(2);
  54. temp2.rowRange(0, 2).copyTo(uvgrid);
  55.  
  56. }

re:

1. Opencv Mat的三种常用类型简介;

end

Size类型如何调用和定义的更多相关文章

  1. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  2. 【转】Android中EditText中的InputType类型含义与如何定义

    原文网址:http://www.crifan.com/summary_android_edittext_inputtype_values_and_meaning_definition/ 经过一些And ...

  3. C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法

    使用反射(Reflect)获取dll文件中的类型并调用方法 需引用:System.Reflection; 1. 使用反射(Reflect)获取dll文件中的类型并调用方法(入门案例) static v ...

  4. 【整理】Android中EditText中的InputType类型含义与如何定义( 转 )

    转自:[整理]Android中EditText中的InputType类型含义与如何定义 用到的时候查到了这篇文章觉得很不错,就在此记录下. [背景] 经过一些Android中EditText方面的折腾 ...

  5. C#调用自己定义表类型參数

    -SQL SERVER生成測试环境: --创建測试DB CREATE database Sales; go USE Sales GO --创建表类型 IF TYPE_ID('LocalDT') IS ...

  6. 利用传入的Type类型来调用范型方法的解决方案

    起因:自定义一个GridView控件,其数据源来源于一个通用方法Get<T>(),根据你传入的T到数据库中得到相应的数据,问题是定义GridView控件时没法在界面端设置使用泛型,只能在每 ...

  7. minic 类型声明与变量定义句型处理

    #include "token_define.h" //这个文件是用来处理句型的,对于算术表达式都是放在前面的那个头文件中来处理 typedef struct _handle_tr ...

  8. 为什么字符串类型可以调用构造函数String的方法,却又不是它的实例

    从所周知,在js中定义一个字符串我们有两种办法: var a = new String("a"); var a = "a"; 第一种方法使用构造函数创建,作为S ...

  9. Kubernetes的pod控制器及ReplicaSet控制器类型的pod的定义

    为什么需要Pod Kubernetes项目之所以这么做的原因: 因为Kubernetes是谷歌公司基于Borg项目做出来的,谷歌工程师发现,他们部署的应用往往存在这进程与进程组的关系.具体说呢,就是这 ...

随机推荐

  1. testNG 学习笔记 Day 1 使用功能详解

    TestSuite处理测试用例有6个规约(否则会被拒绝执行测试) A 测试用例必须是公有类(Public) B 测试用例必须继承与TestCase类 C 测试用例的测试方法必须是公有的( Public ...

  2. Selenium UI 举例 getCssValue

    selenium jar包中,在WebElement的接口中, String getCssValue(String var1); 可以通过标签,获取对应的css值.具体要怎么用呢,如下: WebEle ...

  3. Linux服务器上监控网络带宽的18个常用命令和工具

    一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看CentOS的网络带宽出口多大?可以用下面的命令来查看. ...

  4. python数据持久存储-pickle模块

    pickle模块实现了基本的数据序列和反序列化.pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,通过pickle模块的反序列化操作,能够从文件中创建上一次程序保存的对象. 接 ...

  5. thinkphp5开发的网站出现”No input file specified”(php版本5.6.27)

    thinkphp5开发的网站出现”No input file specified”(php版本5.6.27) 一.总结 一句话总结:搜索引擎一定要用google,比百度节约时间一万倍,google啊, ...

  6. 关于 [TNS-12516 TNS:listener could not find instance with matching protocol stack ]

    Title: Intermittent TNS-12516 or TNS-12519 Errors Connecting Via Net Symptom(s) ~~~~~~~~~~ Client co ...

  7. SVN同步版本库与网站目录2

    定义: SVN版本库  = /home/svn/repos  网站目录     = /var/www/web 1.检出一个项目到网站目录 #svn checkout file:///home/svn/ ...

  8. [Java代码] Java是自学好还是参加培训班好?

    ava 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言. Java可运行于多个平台,如Windows, Mac OS,及其他多种UNIX版本的系统. 本教程给大家简单介 ...

  9. Python的url解析库--urlparse

    一.urlparse解析url的query并构建字典 下面的方法主要的功能: 解析url的各个部分,并能够获取url的query部分,并把query部分构建成dict. 具体的代码实现: >&g ...

  10. android--------AndroidStudio 关闭 Install Run

    前面讲热修复的时候说到了一个 AndroidStudio关闭Instant Run的问题 ,今天来简单的写一下. Android Studio 工具中是有很多好东西的,要全部的知道的话,还是要下点功夫 ...