C++中根据一个点推断距离该点某个单位处的点的方法

OpenCV C++实现亚像素级棋盘格角点提取:从原理到工程实践 在计算机视觉和工业检测领域,图像特征点的定位精度是决定整个系统性能的关键。传统像素级坐标受限于图像传感器的最小单元,难以满足高精度测量需求。亚像素定位技术应运而生,其核心原理是利用像素邻域的灰度或梯度信息,通过数学模型(如灰度矩法、插值法)将特征点位置估计精度提升至像素内部。这项技术的价值在于突破了物理分辨率的限制,为相机标定、三维重建和视觉引导等应用提供了微米级甚至更高的测量基础。尤其在机器视觉、工业自动化场景中,对棋盘格、圆点等标定板特征进行亚像素级提取,是提升标定精度和系统稳定性的核心步骤。本文以Op 阅读详情
int main()
{
	//创建一个用于绘制图像的 空白图  
	cv::Mat image = cv::Mat::zeros(1024, 19200, CV_8UC3);

	//输入拟合点  
	std::vector<cv::Point> points;
	/*points.push_back(cv::Point(500, 158));
	points.push_back(cv::Point(105, 98));
	points.push_back(cv::Point(155, 160));
	points.push_back(cv::Point(212, 220));
	points.push_back(cv::Point(248, 260));
	points.push_back(cv::Point(320, 300));
	points.push_back(cv::Point(350, 360));
	points.push_back(cv::Point(412, 400));*/
	points.push_back(cv::Point(50, 500));
	points.push_back(cv::Point(50, 300));
	points.push_back(cv::Point(250, 300));
	points.push_back(cv::Point(250, 500));

	//将拟合点绘制到空白图上  
	for (int i = 0; i < points.size(); i++)
	{
		cv::circle(image, points[i], 5, cv::Scalar(0, 0, 255), 2, 8, 0);
	}

	cv::Vec4f line_para;

	cv::fitLine(points, line_para, cv::DIST_L2, 0, 1e-2, 1e-2);

	std::cout << "line_para = " << line_para << std::endl;

	//获取点斜式的点和斜率  
	cv::Point point0;
	point0.x = line_para[2];
	point0.y = line_para[3];

	double k = line_para[1] / line_para[0];
	//计算直线的端点(y = k(x - x0) + y0)  
	cv::Point point1, point2;
	point1.x = 20;
	point1.y = k*(20 - point0.x) + point0.y;
	point2.x = 100;
	point2.y = k*(100 - point0.x) + point0.y;

	//计算距离point0 20个单位出的点的位置并画出该段线
	int step = 20;
	Point pt1, pt2;
	//后step处的点
	pt1.x = point1.x - step;
	pt1.y = point1.y - k*step;
	//前step处的点
	pt2.x = point1.x + step;
	pt2.y = point1.y + k*step;
	//Rect rect(pt2.x, pt2.y, 40, 40);

	cv::circle(image, point1, 5, cv::Scalar(0,255, 0), 2, 8, 0);
	waitKey(0);
	cv::circle(image,pt1, 5, cv::Scalar(0, 0, 255), 2, 8, 0);
	waitKey(0);
	cv::circle(image, pt2, 5, cv::Scalar(255, 0, 0), 2, 8, 0);
	waitKey(0);
	cv::line(image, point1, point2, cv::Scalar(0, 255, 0), 2, 8, 0);
	
	cv::imshow("image", image);
	cv::waitKey(0);
	return 0;
}
算法实现部分:
int step = 20;
	Point pt1, pt2;
	//后step处的点
	pt1.x = point1.x - step;
	pt1.y = point1.y - k*step;
	//前step处的点
	pt2.x = point1.x + step;
	pt2.y = point1.y + k*step;
这里的step为距离的单位,即在本例子中就是距离point1点横坐标的距离为20个单位。-表示在该点的左边,+表示在该点的右边。

该方法适用于所有直线表达式。


图片:

绿点为本例中要实验的点,红点距离该点x坐标-20个单位的点,蓝点距离该点x坐标+20个单位的点。

【C++PCL】点云文件读写 本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。 阅读详情

相关推荐

2025年7月6日全国青少年信息素养大赛C++编程小学组复赛真题+答案解析

2025年7月6日全国青少年信息素养大赛C++编程小学组复赛真题+答案解析

伶俐角少儿编程 1036

C++计算一条直线上某点的坐标

假设起点(X1, Y1) 终点(X2, Y2),  间距(从起点开始一段距离)为R 两点之间的距离 S = sqrt(pow(X2-X1, 2) + pow(Y2-Y1, 2)) 方法一: 方位角: F = atan((Y2-Y1)/(X2-X1)) 方位角概念:  方位角又称地平经度(Azimuth (angle)缩写Az)是在平面上量度物体之间的角度

离,路的尽头还很远... 7565

已知一个点的坐标和两点之间距离求另外一点坐标

已知一个点的坐标和两点之间距离求另外一点坐标

c++ 求点到直线的距离

//计算点到直线的距离 double point2LineDistance(cv::Point2d point, cv::Vec4f lineParam) { cv::Point2d qIpoint; cv::Vec4f lineVert; lineVert[0] = lineParam[1]; lineVert[1] = -lineParam[0]; lineVert[2] = point.x; lineVert[3] = point.y; get2

weixin_44901043的博客 6073

C++计算几何算法大全

㈠ 点的基本运算 1. 平面上两点之间距离 1 2. 判断两点是否重合 1 3. 矢量叉乘 1 4. 矢量点乘 2 5. 判断点是否在线段上 2 6. 求一点饶某点旋转后的坐标 2 7. 求矢量夹角 2 ㈡ 线段及直线的基本运算 1. 点与线段的关系 3 2. 求点到线段所在直线垂线的垂足 4 3. 点到线段的最近点 4 4. 点到线段所在直线的距离 4 5. 点到折线集的最近距离 4 6. 判断圆是否在多边形内 5 7. 求矢量夹角余弦 5 8. 求线段之间的夹角 5 9. 判断线段是否相交 6 10.判断线段是否相交但不交在端点处 6 11.求线段所在直线的方程 6 12.求直线的斜率 7 13.求直线的倾斜角 7 14.求点关于某直线的对称点 7 15.判断两条直线是否相交及求直线交点 7 16.判断线段是否相交,如果相交返回交点 7 ㈢ 多边形常用算法模块 1. 判断多边形是否简单多边形 8 2. 检查多边形顶点的凸凹性 9 3. 判断多边形是否凸多边形 9 4. 求多边形面积 9 5. 判断多边形顶点的排列方向,方法一 10 6. 判断多边形顶点的排列方向,方法二 10 7. 射线法判断点是否在多边形内 10 8. 判断点是否在凸多边形内 11 9. 寻找点集的graham算法 12 10.寻找点集凸包的卷包裹法 13 11.判断线段是否在多边形内 14 12.求简单多边形的重心 15 13.求凸多边形的重心 17 14.求肯定在给定多边形内的一个点 17 15.求从多边形外一点出发到该多边形的切线 18 16.判断多边形的核是否存在 19 ㈣ 圆的基本运算 1 .点是否在圆内 20 2 .求不共线的三点所确定的圆 21 ㈤ 矩形的基本运算 1.已知矩形三点坐标,求第4点坐标 22 ㈥ 常用算法的描述 22 ㈦ 补充 1.两圆关系: 24 2.判断圆是否在矩形内: 24 3.点到平面的距离: 25 4.点是否在直线同侧: 25 5.镜面反射线: 25 6.矩形包含: 26 7.两圆交点: 27 8.两圆公共面积: 28 9. 圆和直线关系: 29 10. 内切圆: 30 11. 求切点: 31 12. 线段的左右旋: 31

分治策略(算法设计)寻找最邻近点对c++源代码

使用分治算法实现寻找n个点中最邻近点的距离的平方。时间复杂度O(nlogn).

用c++计算直线定点到给定点直线距离

#include<iostream> #include<cmath> using namespace std; class Point { private: float x,y; public: Point(float,float); float getX(); float getY(); }; Point::Point(float a,float b) { x=a; y=b; } float Poin

m0_69801663的博客 1334

C++判断一个点是否在圆内的方法

主要为大家详细介绍了C++判断一个点是否在圆内的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C++-点到点、点到线、共线等常用计算

C++常用数学计算1. 一点到另外两点组成直线的距离2.获取平面两点间的距离3计算两个向量的夹角4. 判断三点共线 1. 一点到另外两点组成直线的距离 已知点p /p1/p2,求p到p1 p2的距离 根据点到直线的距离公式:d = (Ax0 + By0 + C) / sqrt(A * A + B * B) A = y2 - y1 B = x1 - x2; C = x2 * y1 - x1 * y2; 程序实现 //定义Point2f结构体 struct Point2f { float x; floa

ゃ﹏淸凨ゞ 2992

Win11显卡驱动安装失败的全面解决方案

Windows 11显卡驱动安装失败是一个比较常见的问题,但通过上述方法,我们可以有效地解决这一问题。方法一通过调整组策略编辑器的驱动程序安装策略,可能解决一些因签名问题导致的安装失败;而方法二则通过重装Windows 11系统,为系统提供一个全新的、干净的环境,从而可能解决更复杂的安装问题。在实际操作中,用户可以根据具体情况选择合适的方法来解决显卡驱动安装失败的问题。

nntxthml的博客 2663

AWVS安装与使用教程

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的自动化网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的Web网站。WVS可以通过检查SQL注入攻击漏洞、XSS跨站脚本攻击漏洞等漏洞来审核Web应用程序的安全性。

qq_59607911的博客 4099

打卡信奥刷题(2703)用C++实现信奥题 P3134 [USACO16JAN] Lights Out G

题目描述Bessie在谷仓停电时需要根据记忆和触觉寻找出口。谷仓由N个顶点组成的多边形表示,边在水平和垂直方向交替。Bessie采用顺时针行走策略,直到能确定当前位置,再选择最短路径到出口。要求计算在最坏情况下,黑暗中和亮灯时到达出口距离差的最大值。 输入输出样例展示了当N=4时,最坏情况差值为2。 解题思路:通过预处理各顶点间的距离和转向信息,利用哈希表存储路径特征,找到唯一可识别位置后计算距离差。C++实现通过遍历顶点,记录路径特征并比较最短路径差来求解。 该问题考察几何路径分析和最优化策略,适合算法竞

Loge谈信奥--一个专注于信奥人的博客 846

App渗透 - 人脸识别登录绕过

一、APP抓包和逆向破解加密算法打开APP是一个登录框抓包后发现参数被加密了使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数定位过去,一套加解密算法都写好了放在这放到浏览器console里面调试,果然没错二、寻找注入点首先测试了一下注入明文:{"userName":"TEST'...

渗透测试研究中心 2826

TorchCraftAI 地图分析解密:BWEM 与地图特征提取在星际争霸游戏 AI 中的妙用

如果你想让 AI 学会玩《星际争霸:母巢之战》(StarCraft: Brood War),第一关不是训练神经网络,而是让 AI **读懂地图**。TorchCraftAI 是一个专注于构建星际争霸游戏 AI 的学习平台,它的地图分析能力由两大支柱支撑:BWEM 地图解析库与一整套地图特征提取模块。本文将带你以"新手视角"揭开 TorchCraftAI 地图分析的秘密,看看它如何把一张张 .scx

gitblog_00012的博客 906

SAP 移动类型简述

SAP系统中用于标志物料移动(收货/发货/转储/转储记帐)的三位的数字/字母 通常分几大类:收货 发货 转储 库房调整 常用的有: 收货类 (MB1C) 101 采购订单收货 103 采购订单收货至冻结状态 122 无采购订单退货 161 按退货采购订单退货 131 从生产订单 501 无采购订单收货 511 免费收货 发货类(MB1A) 201 成本中心消耗

forever_crazy的专栏 7203

别再死记硬背了!用MaxDEA软件实操SBM、DDF、NDDF模型,手把手教你测算绿色全要素生产率

本文深度解析如何使用MaxDEA软件实操SBM、DDF、NDDF模型,手把手教你测算绿色全要素生产率(GTFP)。通过详细的模型选择对比、数据准备策略和MaxDEA操作流程,帮助研究者科学构建指标体系并准确解读结果,提升环境管理研究的实证分析能力。

weixin_28731231的博客 316

C++实现高斯混合模型:从概率原理到高性能代码实战

在机器学习与数据分析领域,聚类分析是探索数据内在结构的基础任务。传统K-Means等硬聚类方法假设每个数据点仅属于一个簇,而高斯混合模型作为一种概率生成模型,通过引入软分配机制,计算数据点属于各个高斯组件的后验概率,从而更灵活地描述复杂的数据分布。其核心在于使用期望最大化算法迭代优化模型参数,包括混合系数、均值向量和协方差矩阵。这种基于概率的建模方式,不仅提升了聚类效果,还使其在密度估计和异常检测等场景中展现出独特价值。本文聚焦于使用C++从零实现GMM,深入剖析了协方差矩阵正则化、对数域计算等关键数值稳定

weixin_33696822的博客 465

SpringBoot文件上传实战:MultipartFile重复读取的3种方法(附避坑指南)

本文详细介绍了SpringBoot中处理MultipartFile重复读取的3种实用方法,包括字节数组缓存法、临时文件法和流重置法,并提供了避坑指南和性能优化技巧。特别适合需要多次读取上传文件内容的开发者,帮助解决InputStream流只能读取一次的问题。

weixin_28710999的博客 398

threepp物理集成:PhysX物理引擎与3D场景的完美结合指南

在现代3D应用开发中,物理模拟是不可或缺的核心功能。threepp作为一款跨平台的C++20 3D库,提供了与three.js相似的高级API,而其与PhysX物理引擎的深度集成更是为开发者带来了强大的物理模拟能力。本文将为您详细介绍threepp如何与PhysX物理引擎结合,创建逼真的3D物理场景。 ## 为什么选择PhysX物理引擎? 🚀 PhysX是业界领先的物理引擎,由NVIDIA开

gitblog_00082的博客 726

【ROS】ROS2导航Nav2:简介、安装、测试效果、错误处理

在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。

郭老二 5089

生存曲线绘制及图例标签添加(使用R语言)

数据应该包含两列:一个是表示个体生存时间的时间变量(通常称为"时间(time)“)和一个是表示个体是否发生事件(如死亡)的事件变量(通常称为"事件(event)”)。通过修改上述代码中的数据和参数,您可以根据自己的需求绘制生存曲线,并添加相应的图例信息和标签。生存曲线是在生存分析中常用的工具,用于描述一组个体随时间的存活概率。函数的第一个参数指定图例的位置,这里我们选择了右上角(“topright”)。包来进行生存曲线的绘制,并通过添加图例信息和标签来增强可视化效果。的数据框,包含这两列数据。

CyberXZ的博客 557

solvepnp函数-世界坐标系

一、 二、 世界坐标系是任意选定的,可以任意事先定义,然后给出每个特征点在世界坐标系下的三维坐标,然后以一定顺序存储这些点。 特征点的像素坐标,一般是通过角点检测算法直接得到的,角点检测算法有他自己的存储点的顺序,此时需要把输入的像素点的存储顺序人为改变,使其和输入的世界坐标的顺序对应相同。 角点检测算法有他自己的存储点的顺序,或者不改变像素点的存储顺序,然后根据点与点的对应关系 确定...

lyhbkz的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

cf#186-C. Mr. Kitayuta, the Treasure Hunter-dp(预推断+offset)

http://codeforces.com/problemset/problem/505/C 题意: 有30001个岛屿,下标为0~30000,给n个数告诉你有n份宝藏藏在哪些岛上。  你从0往下标大的方向跳,第一步跳的距离为d。 如果上一步跳的距离为D,这一步就可以跳D-1或D或D+1(但是距离必须大于0)。 问最多拿到多少宝藏。 思路: dp[i][j] 表示 刚到达

缺氧 599

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

《C++标准库》第5章 通用工具

《C++标准库》第5章 通用工具 pair和tuple 便捷函数make_pair() Template函数make_pair(),能够让我们无须写出类型就能生成一个pair对象。 make_pair函数的自动推断有时候可能并非用户所想,一个表达式用户明白的指出类型时,产生出来的pair将有绝对明确的类型 Tuple(不定数的值组) Tuple中的每个类型由默认构造函数初始化,基础类型都会被初始化为0 get函数所需要的index必须在编译期已知,运行期再传入一个值是不被允许的: 便捷函数ref和

youyadefeng1的博客 519

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

利用持续同调分析通用概念空间拓扑结构的普适性方法

本文提出了一种利用持续同调(Persistent Homology)分析概念空间拓扑结构的普适性方法。该方法将概念空间建模为高维点云,通过Vietoris-Rips滤过构建多尺度拓扑复形序列,计算持续同调来提取稳定的拓扑特征。关键创新在于:1) 坐标无关、多尺度观测、噪声鲁棒的拓扑分析方法;2) 标准化流程覆盖从概念嵌入到语义解释的全链路;3) 能捕捉传统方法难以发现的"语义闭环"等高阶结构。实验表明,该方法提取的连通分支、独立环和空腔等拓扑特征能稳定反映概念空间的本质组织结构,且对局部

方见华 1225
上一篇: 不同机器中不同变量的大小
下一篇: 求连直线的焦点
LiBin1103
博客等级 码龄9年 38粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值