参考网址:http://blog.csdn.net/duanwuqing/article/details/5458286

代码实现方法一:

得到映射矩阵M

Mat ObtainM(vector <CvPoint> vOriginalPoint, vector <CvPoint> vMapPoint)
{Mat dstMapM;if (3 != vOriginalPoint.size()){return dstMapM;}CvMat*matOriginal = cvCreateMat(3, 3, CV_64FC1);cvZero(matOriginal);CvMat*matMap = cvCreateMat(3, 3, CV_64FC1);cvZero(matMap);for (int i = 0, iLen = vOriginalPoint.size(); i < iLen; ++i){cvmSet(matOriginal, i, 0, vOriginalPoint[i].x);cvmSet(matOriginal, i, 1, vOriginalPoint[i].y);cvmSet(matOriginal, i, 2, 1);cvmSet(matMap, i, 0, vMapPoint[i].x);cvmSet(matMap, i, 1, vMapPoint[i].y);cvmSet(matMap, i, 2, 1);}CvMat *matOriginalInv;matOriginalInv = cvCreateMat(3, 3, CV_64FC1);double vX = cvInvert(matOriginal, matOriginalInv, CV_SVD);CvMat *matMapM;matMapM = cvCreateMat(3, 3, CV_64FC1);Mat mInv = Mat(matOriginalInv, true);Mat mMap = Mat(matMap, true);dstMapM = mInv * mMap;cvReleaseMat(&matOriginal);matOriginal = NULL;cvReleaseMat(&matMap);matMap = NULL;cvReleaseMat(&matOriginalInv);matOriginalInv = NULL;cvReleaseMat(&matMapM);matMapM = NULL;return dstMapM;
}
根据映射矩阵得到映射点位置
bool ObtainMPoint(cv::Mat mapM, CvPoint ptIn, CvPoint& ptOut)
{if (mapM.empty()){return false;}CvMat*matOriginal = cvCreateMat(1, 3, CV_64FC1);cvZero(matOriginal);cvmSet(matOriginal, 0, 0, ptIn.x);cvmSet(matOriginal, 0, 1, ptIn.y);cvmSet(matOriginal, 0, 2, 1);Mat mInv = Mat(matOriginal, true);Mat dstMapM = mInv * mapM;ptOut.x = dstMapM.at<double>(0, 0);ptOut.y = dstMapM.at<double>(0, 1);cvReleaseMat(&matOriginal);matOriginal = NULL;return true;
}

代码随便写写,专业勿喷!

二维空间中两个三角形之间的映射关系相关推荐

  1. 在db2中 两个数据库之间的两个表的联合查询

    大家好,今天遇到了在db2中 两个数据库之间的两个表的联合查询 我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理 我找了类似于 比如两个数据库: db1,db2 用户名 ...

  2. 【目标检测】SPP-Net中候选区域在原图和feature map之间的映射关系

    目录:候选区域在原图和feature map之间的映射关系 一.问题转化 1. 什么是感受野?以及感受野大小如何计算? 2. 感受野上的坐标映射 3. 论文中关于特征映射的讲解 二.何凯明演讲的PPT ...

  3. Joda-Time中两个日期之间的天数

    本文翻译自:Number of days between two dates in Joda-Time How do I find the difference in Days between two ...

  4. 获取Moment Js中两个日期之间的小时差异

    本文翻译自:Get hours difference between two dates in Moment Js I'm able to get the difference between two ...

  5. C语言 —— 获取字符串中两个字符之间的的数据

    问题描述:获取字符串中两个字符之间的数据.最近写SMTP代理,需要获取发送方与接收方的邮件名称. 字符串为 "MAIL FROM:<test1@163.com>\r\n" ...

  6. C语言数组中两个数字之间的最大差的算法(附完整源码)

    C语言数组中两个数字之间的最大差的算法 C语言数组中两个数字之间的最大差的算法完整源码(定义,实现,main函数测试) C语言数组中两个数字之间的最大差的算法完整源码(定义,实现,main函数测试) ...

  7. 要在某一房间中两台计算机之间,关于局域网、广域网和互联网的组建和因特网的接入,回答下列问题。要在某一房间中两台计算机之间实现网络通信,下列方法不可行的是...

    集市交易中的叫卖声和敲击声是最一种特殊的民俗现象,局域建和接入间中计算机之间实其共同特点为 网广网为什么有人会产生心理困扰() 牙周组织在受到异常的力作用其损伤一直存在,域网因特房但也会有组织修复 ...

  8. 如果在一个工程中有两个vhd文件,就相当于有两个模块,那么对于这个工程整体的bdf文件生成,怎么把这两个模块都加到同一个bdf文件中。bdf文件中两个模块之间的连线及输入输出,是自己输进去的还是自动生

    如果在一个工程中有两个vhd文件,就相当于有两个模块,那么对于这个工程整体的bdf文件生成,怎么把这两个模块都加到同一个bdf文件中.bdf文件中两个模块之间的连线及输入输出,是自己输进去的还是自动生 ...

  9. 查找有向图中两个顶点之间是否存在路径

    查找有向图中两个顶点之间是否存在路径 给定一个有向图和其中的两个顶点,检查是否存在从第一个给定顶点到第二个顶点的路径. Consider the following Graph:Input : (u, ...

最新文章

  1. 软件工程学完java后干_软件工程学习后的一些体会--------两周
  2. Mysql的int类型探究
  3. 01-复杂度3 二分查找
  4. Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发
  5. 数据科学与python——Pandas统计分析基础(数据堆叠+数据清洗)
  6. java编程 内存_Java编程技术之浅析JVM内存
  7. JSP笔记——7.自定义标签
  8. SpringSecurity安全框架
  9. Qt编写自定义控件15-百分比仪表盘
  10. python无法启动此程序因为_(python shell怎么用)为啥我按照python安装教程,总说无法启动此程序,因为计算机中丢失?...
  11. asp 读取 json 数据
  12. 跨平台日志清理工具 Log-Cutter v2.0.1 RC-1 发布
  13. 推荐几款好用的文本编辑器
  14. Android控件 - TextView、Button、EditText、CompoundButton、CheckBox简介
  15. 轨迹路线生成与运动插件 Curvy Spline 的使用
  16. Eclipse编辑器基本设置
  17. 表白神器java代码_java制作七夕表白神器的方法
  18. 计算机组成原理——计算机系统概述
  19. 小米手机v3.exo 合并_Android 3.0预览版SDK已发布,eXo启动了Elastic Beanstalk的IDE
  20. 再谈机器学习中的归一化方法(Normalization Method)

热门文章

  1. 如何用ps换证件照背景颜色
  2. Swat.io如何在两年内从MySQL迁移到PostgreSQL的
  3. 使用Adobe Acrobat X Pro在PDF中添加文字和图片
  4. make_classification函数
  5. Angular +Ionic实现增加,删除,编辑,修改功能。
  6. 要跳槽的再等等,先看看这份面经……
  7. 充电人数逼近老番茄,B站用户为什么总在投喂徐云?
  8. 二叉树的前序中序后序遍历
  9. Spring securty<六> 认证--手机号+验证码
  10. 外频是计算机的性能指标吗,cpu性能指标之外频