cv::Size sz = cv::Size(PROB_W, PROB_H);//Size(srcimage.cols, srcimage.rows)
groundtoimage(xylimit, uvgd, sz, h, roll, pitch, camera_param_KK );
sz.height
sz.width
//groundtoimage...
void groundtoimage( cv::Mat& xylimt, cv::Mat& uvgrid, cv::Size& sz, double ht, double roll, double pitch, double* camera_param_KK )
{
//std::cout << "sz.height: " << sz.height << " ------ sz.width: " << sz.width << std::endl;
int height = (int)(ht*1000); //unit-mm.
double fx = camera_param_KK[0];
double fy = camera_param_KK[4];
double cx = camera_param_KK[2];
double cy = camera_param_KK[5]; double c1 = cos(pitch*PI / 180);
double s1 = sin(pitch*PI / 180);
double c2 = cos(roll*PI / 180);
double s2 = sin(roll*PI / 180);
cv::Mat Tx = (cv::Mat_<double>(3, 3) << 1, 0, 0,
0, c1, s1,
0, -s1, c1);
cv::Mat Tf = (cv::Mat_<double>(3, 3) << fx, 0, cx,
0, fy, cy,
0, 0, 1); double xmin = 0, xmax = 0, ymin = 0, ymax = 0;
minMaxLoc(xylimt.row(0), &xmin, &xmax);
minMaxLoc(xylimt.row(1), &ymin, &ymax);
//std::cout << "xmin: " << xmin << " xmax: " << xmax << std::endl;
//std::cout << "ymin: " << ymin << " ymax: " << ymax << std::endl;
double steprow = (ymax - ymin) / sz.height;
double stepcol = (xmax - xmin) / sz.width;
cv::Mat xygrid = cv::Mat::zeros(2, sz.height*sz.width, CV_64FC1); float y = ymax;
for (int i = 1; i <= sz.height; i++)
{
float x = xmin;
for (int j = 0; j < sz.width; j++)
{
xygrid.at<double>(0, (i - 1)*sz.width + j) = x;
xygrid.at<double>(1, (i - 1)*sz.width + j) = y;
x = x + stepcol;
}
y = y - steprow;
} cv::Mat temp1, temp2;
xygrid.rowRange(0, 2).copyTo(temp2);
temp1 = cv::Mat::ones(1, temp2.cols, CV_64FC1)*(-height);
cv::vconcat(temp2, temp1, temp2); cv::Mat T = Tf*Tx;
temp2 = T * temp2; temp2.row(0) = temp2.row(0) / temp2.row(2);
temp2.row(1) = temp2.row(1) / temp2.row(2);
temp2.rowRange(0, 2).copyTo(uvgrid); }

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. 【转】VMware网络连接模式—桥接、NAT以及仅主机模式的详细介绍和区别

    ☞ 本文主要介绍软件『VMware Workstation(虚拟机)』的相关内容:VMware网络连接模式—桥接.NAT以及仅主机模式的详细介绍和区别. 其下列版本/分支可以参考本文: 全部版本/分支 ...

  2. Qt_QString.indesOf和mid测试

    1.indexOf #define GID_PREFIX "dr_" QString str = "dr__awedr4"; int iIdx = str.in ...

  3. c语言的左移和右移

    转自:https://www.cnblogs.com/myblesh/articles/2431806.html 先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用<<运算符.例 ...

  4. 《A_Pancers》团队作业6—团队项目系统设计改进与详细设计

    一.团队项目系统设计改进: 1.分析项目系统设计说明书初稿的不足,特别是软件系统结构模型建模不完善内容: 在上一次的项目系统设计说明书中没有很好的完成软件系统结构模型的建模设计,只做了基本的系统项目原 ...

  5. Activity生命周期之我见

    关于Activity生命周期的文章很多,而且大部分也说得很详细,所以作为关于这方面的内容我本来不想多说,但是大家可能跟我之前一样,在看这方面的内容的时候都能很容易地看懂,但是过几天又忘了,或者在用的程 ...

  6. TimeZone 时区 (JS .NET JSON MYSQL) + work week 闰年

    来源参考 : http://www.cnblogs.com/qiuyi21/archive/2008/03/04/1089456.html 来源参考 : http://walkingice.blogs ...

  7. 20161208xlVBA工作表数据导入Access

    Sub InsertToDataBase() Dim DataPath As String Dim SQL As String Const DataName As String = "yun ...

  8. php实现频率限制

    一.前言 公司要做呼叫中心,呼叫中心为了防止骚扰,需要限制用户拨打电话的频率,比如30s只能点击一次.这样的需求是通过redis来实现的. 二.具体实现 <?php class Resource ...

  9. bfs,dfs区别

    一般来说用DFS解决的问题都可以用BFS来解决. DFS(深搜的同时考虑回溯) bfs=队列,入队列,出队列:dfs=栈,压栈,出栈 bfs是按一层一层来访问的,所以适合有目标求最短路的步数,你想想层 ...

  10. VS2013/2015 html 设计视图窗口