当前位置: 首页 > news >正文

【32】C++实战篇—— m行n列的坐标点,求每行相邻点X差值dX,每列相邻点y差值dY,并以矩阵形式左端对齐

文章目录

  • 1 代码实现
  • 2 示例验证

m行n列的坐标点,求每行相邻点X差值dX,每列相邻点y差值dY,并以矩阵形式左端对齐

例如:
vector< cv::Point2f>Center中存储了3行3列的9个点,现在求每行相邻点X差值,那么每行有3-1个差值,一共有3行,就以32的形式输出;每列相邻点y差值,那么每列有3-1个差值,一共有3列,就以23的形式输出;

1 代码实现

//输出3*3点阵坐标的行距、列距
int PutRowandColSpace(vector< cv::Point2f> Center)
{// 确保 points 包含了9个点if (Center.size() != 9) {std::cerr << "Error: The number of points should be 9." << std::endl;return -1; // 或者执行错误处理}// 计算每行相邻点的X差值并输出cout << "每行相邻点的X差值:" << endl;for (int i = 0; i < 3; ++i) {for (int j = 0; j < 2; ++j) {float dx = Center[i * 3 + j + 1].x - Center[i * 3 + j].x;cout << setw(5) << dx;}cout << endl;}// 计算每列相邻点的Y差值并输出cout << "每列相邻点的Y差值:" << endl;for (int i = 0; i < 2; ++i) {for (int j = 0; j < 3; ++j) {float dy = Center[(i + 1) * 3 + j].y - Center[i * 3 + j].y;cout << setw(5) << dy;}cout << endl;}return 0;
}

对于cv::Point2f Center[9]此方法同样适用,只是改一下入口参数即可

////输出3*3点阵坐标的行距、列距
int PutRowandColSpace2(cv::Point2f Center[9])
{// 计算每行相邻点的X差值并输出cout << "每行相邻点的X差值:" << endl;for (int i = 0; i < 3; ++i) {for (int j = 0; j < 2; ++j) {float dx = Center[i * 3 + j + 1].x - Center[i * 3 + j].x;cout << setw(10) << dx;}cout << endl;}// 计算每列相邻点的Y差值并输出cout << "每列相邻点的Y差值:" << endl;for (int i = 0; i < 2; ++i) {for (int j = 0; j < 3; ++j) {float dy = Center[(i + 1) * 3 + j].y - Center[i * 3 + j].y;cout << setw(10) << dy;}cout << endl;}return 0;
}

2 示例验证

如图,在图片中找到9个点圆点坐标,现在需要检查9个圆心每行相邻点间距,和每列相邻点间距是否是否一致;
在这里插入图片描述
已求得9个圆心

[863.396, 626.316]      [1484.38, 628.124]      [2108.53, 639.256]
[861.457, 751.556]      [1482.73, 756.879]      [2107.33, 766.905]
[861.085, 881.949]      [1481.89, 889.102]      [2104.66, 897.348]  

3*3点阵行距、列距:

每行相邻点的X差值:620.984   624.151621.274   624.599620.803   622.774每列相邻点的Y差值:125.241   128.755   127.649130.393   132.223   130.443
http://www.lryc.cn/news/611807.html

相关文章:

  • 远程连接----ubuntu ,rocky 等Linux系统,WindTerm_2.7.0
  • Spring选择哪种方式代理?
  • 阿里云DMS Data Copilot——高效智能的数据助手,助力企业实现数据驱动的未来
  • 深入理解 Maven POM 文件:核心配置详解
  • Jenkinsfile各指令详解
  • Java学习第一百零九部分——Jenkins(一)
  • 基于通用优化软件GAMS的数学建模和优化分析
  • AlphaEarth模型架构梳理及借鉴哪些深度学习领域方面的思想
  • React:受控组件和非受控组件
  • WebStorm转VSCode:高效迁移指南
  • 前端开发_怎么禁止用户复制内容
  • vue3 el-dialog自定义实现拖拽、限制视口范围增加了拖拽位置持久化的功能
  • 【前端开发】三. JS运算符
  • 2.6 sync
  • vue3 find 数组查找方法
  • JSON巴巴 - 专业JSON格式化工具:让任何JSON都能完美格式化
  • Excel将整列值转换为字符串
  • Git 乱码文件处理全流程指南
  • 通过最严时序标准,再登产业图谱榜首,TDengine 时序数据库在可信数据库大会荣获双荣誉
  • Apache Flink 的详细介绍
  • 时序数据库的发展现状与未来趋势
  • Excel单元格设置下拉框、选项背景
  • 【OSCP】- Monitoring 靶场学习(Proving Grounds Play)
  • SpringBoot 整合Langchain4j 对接主流大模型实战详解
  • 科技云报到:Agent应用爆发,谁成为向上托举的力量?
  • 第一章-网络信息安全概述
  • 数据赋能(381)——数据挖掘——支持异类数据库
  • C语言的数组与字符串练习题2
  • GitHub 趋势日报 (2025年08月05日)
  • Gitlab+Jenkins+K8S+Registry 建立 CI/CD 流水线