直角点的自动增补与直角化处理

数字摄影测量关于直角点的自动增补与直角化处理基于MFC的实现
核心代码:

std::vector<CPoint> temp;void CzhijiaodianView::OnLButtonDown(UINT nFlags, CPoint point)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CDC* pDC = GetDC();CString str;str.Format(TEXT("%d,%d"), point.x, point.y);pDC->FillSolidRect(0, 0, 100, 100, GetSysColor(COLOR_WINDOW));pDC->TextOut(1, 0, str);temp.push_back(point);CView::OnLButtonDown(nFlags, point);//CDC* pDC = GetDC();//此时利用的是CWnd的成员函数GetDCfor (size_t i = 0; i < temp.size()-1; i++){pDC->MoveTo(temp[i]);pDC->LineTo(temp[i + 1]);}ReleaseDC(pDC);
}void CzhijiaodianView::OnAzengbu()
{// TODO: 在此添加命令处理程序代码CPoint Xn_Yn;CDC* pDC = GetDC();//此时利用的是CWnd的成员函数GetDCdouble x1, y1, x2, y2, xn_, yn_, dx, dy, D;double Xn, Yn;x1 = temp[0].x;y1 = temp[0].y;x2 = temp[1].x;y2 = temp[1].y;xn_ = temp[temp.size() - 1].x;yn_ = temp[temp.size() - 1].y;dx = x2 - x1;dy = y2 - y1;D = pow(dx, 2) + pow(dy, 2);Xn = ((x1 * dx + y1 * dy) * dx - (yn_ * dx - xn_ * dy) * dy) / D;Yn = ((yn_ * dx - xn_ * dy) * dx + (x1 * dx + y1 * dy) * dy) / D;Xn_Yn.x = long(Xn);Xn_Yn.y = long(Yn);temp.push_back(Xn_Yn);pDC->MoveTo(temp[temp.size() - 2]);pDC->LineTo(temp[temp.size() - 1]);pDC->MoveTo(temp[temp.size() - 1]);pDC->LineTo(temp[0]);ReleaseDC(pDC);
}void CzhijiaodianView::OnAzhijiaohua()
{// TODO: 在此添加命令处理程序代码CDC* pDC = GetDC();double xi=temp[0].x, yi=temp[0].y, xj = temp[1].x, yj = temp[1].y,xk = temp[2].x, yk = temp[2].y, xn = temp[3].x, yn = temp[3].y;double A[24], W[3], P[64] = {};double AT[24] = {}, AQ[24] = {}, AQAT[9] = {}, K[3] = {}, P_AT[24] = {}, V[8] = {};A[0] = xk-xi ;      A[1] = yk-yi;       A[2] = 2*xj-xi-xk;  A[3] = 2*yj-yi-yk; A[4] = xi-xj;A[5] = yi-yj;       A[6] = 0.0;         A[7] = 0.0;         A[8] = 0.0;        A[9] = 0.0;A[10] = xn-xk;A[11] = yn-yk;      A[12] = 2*xk-xj-xn; A[13] = 2*yk-yi-yn; A[14] = xj-xk;     A[15] = yj-yk;A[16] = xk - xn;    A[17] = yk - yn;    A[18] = 0.0;        A[19] = 0.0;       A[20] = xi-xn;A[21] = yi-yn;A[22] = 2*xn-xk-xi; A[23] = 2*yn-yk-yi;W[0] = -((xi - xj) * (xk - xj) + (yi - yj) * (yk - yi));W[1] = -((xj - xk) * (xn - xk) + (yj - yk) * (yn - yk));W[2] = -((xk - xn) * (xi - xn) + (yk - yn) * (yi - yn));for (int i = 0; i < 64; i += 9){P[i] = 1.0;}MatrixTra(3, 8, A, AT);//求AT(8*3)MatrixInv(3, P);//求P的逆MatrixMul(A, P, 3, 8, 8, AQ);//求A*Q(3*8)MatrixMul(AQ, AT, 3, 8, 3, AQAT);//求AQAT(3*3)MatrixInv(3, AQAT);//求AQAT的逆矩阵(3*3)MatrixMul(AQAT, W, 3, 3, 1, K);//求KMatrixMul(P, AT, 8, 8, 3, P_AT);//求QATMatrixMul(P_AT, K, 8, 3, 1, V);//求Vstd::vector<CPoint>temp_new;CPoint var;for (size_t i = 0; i < temp.size(); i++){var.x = temp[i].x + V[2 * i];var.y = temp[i].y + V[2 * i + 1];temp_new.push_back(var);}for (size_t i = 0; i < temp_new.size() - 1; i++){pDC->MoveTo(temp_new[i]);pDC->LineTo(temp_new[i + 1]);}pDC->MoveTo(temp_new[temp_new.size() - 1]);pDC->LineTo(temp_new[0]);ReleaseDC(pDC);}

直角点的自动增补与直角化处理(数字摄影测量)相关推荐

  1. 数字摄影测量-直角的自动增补

    #数字摄影测量-直角的自动增补 用的是MFC 关键代码: std::vector<CPoint> temp;void CzhijiaodianView::OnLButtonDown(UIN ...

  2. 计算机应用池在哪,机动车号牌发放将全国统一 号池号码全部由计算机随机投放、自动增补...

    生活报6月1日讯 近日,公安部部署启动机动车号牌管理改革,此次号牌管理改革推出了一系列新的服务群众举措:车主可以登陆网站或用手机APP进行网上选号,选号范围有所扩大,保留号牌也将更加容易.按照公安部统 ...

  3. selenium自动登录boss直聘

    基于selenium模块自动登录boss直聘 超级鹰识别验证码操作详细. import timefrom PIL import Image from selenium import webdriver ...

  4. CASAIM全自动3d测量仪自动检测差速器差壳全尺寸测量装配检测

    随着汽车行业的新变化,汽车零部件行业也呈现出新的发展趋势.汽车零部件产品作为汽车制造业的配套产业,发展也十分迅速. 差速器作为汽车关键零部件,由差速器差壳.行星齿轮.半轴齿轮.半轴和行星齿轮轴组装而成 ...

  5. Appium+Python实现自动投递Boss直聘简历

    一.首先安装Appium和所需要的所有环境 这里所需要的所有软件和环境,可以看我这篇博客. https://blog.csdn.net/qq_43107323/article/details/1056 ...

  6. 关于手机APP在手机桌面图标圆形的,圆角方形的,直角方形的自动适配。

    去年看到有人提了说桌面图标在有的手机上不一样,即使同一个手机不同的app,图标也是不一样,有的方形,有的圆形(华为手机8.0),就自己网上看了看,把公司的app桌面图标适配了,但是今天写新项目时发现又 ...

  7. 量化延时法时间测量_干货分享:直线度测量发展及几种方法详解

    摘要:直线度是很多轧材需要检测的一项重要尺寸,直线度的测量已经从人工测量方式发展为直线度测量仪自动测量. 关键词:直线度:测量方式: 主要是测量圆柱体和圆锥体的素线直线度误差.机床和其他机器的导轨面以 ...

  8. 双像立体测图基础与立体测图

    立体像对的基本知识 立体像对的基本概念 立体像对:由不同摄站获取的,具有一定影像重叠的两张像片. 立体像对的点.线.面 从数学上讲,若知道了像片的内外方位元素和同名像点的坐标,则可以列出4个方程,求解 ...

  9. VSLAM中的特征点三角化

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:紫薯萝卜 https://zhuanlan.zhihu.com/p/103694374 本文仅做 ...

最新文章

  1. AI | 优化背后的数学基础
  2. IIS 内部运行机制
  3. ssd_detected.cpp代码 head.h代码
  4. Ribbon、Feign和OpenFeign的区别来了
  5. r语言 中断r的输入_R语言_004数据输入
  6. ON1 photo raw 2021(ps/lr滤镜插件) 下载及安装
  7. FreeMarker中文API手冊(完整)
  8. 各种字符串Hash函数
  9. pycharm的todo和fixme标记,标志为今后再做和bug点
  10. 5. JavaScript RegExp 类型
  11. Java多线程讲解,超详细!可获取相关笔记
  12. Flink查询关联Hbase输出
  13. 电脑快速截屏(缺少PrtScr键)
  14. Gpower CMS/模板置标
  15. 计算机文档排版软件,WORD排版大师
  16. 几款强大的数据恢复工具你有用过吗
  17. 密封橡胶圈尺寸缺陷视觉检测系统
  18. 网站制作工具简介_实用又免费的短视频制作工具及短视频素材源网站
  19. Fiddler抓取手机端APP接口数据
  20. ES3之cookie

热门文章

  1. 暴力破解+验证码爆破
  2. ORACLE中行列转换的问题解决
  3. DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02)
  4. C++学习(六) 常引用、常对象、常对象成员、常成员函数
  5. #今日论文推荐# 强化学习大牛Sergey Levine新作:三个大模型教会机器人认路
  6. 华科电信学院能推免到计算机学院吗,华科电信系这么恐怖?
  7. JAVA求第二小的整数
  8. Django 前后端分离(REST Framework)
  9. 条码打印软件批量制作的条码如何固定尺寸不变
  10. 全国计算机一级考试选择题题库