OpenCV中的坐标运算 [C#]

在C#语言中,可以使用OpenCV库进行坐标运算,包括平移、缩放、点到点的距离和点到线的距离。

从Nuget下载 OpenCvSharp4.Windows

下面是一些示例代码:

 点到点的距离:

using OpenCvSharp;/// <summary>
/// 点到点距离
/// </summary>
/// <param name="point1">点1</param>
/// <param name="point2">点2</param>
/// <returns>距离</returns>
private double Distance_Point2Point(Point2d point1, Point2d point2)
{double distance = Math.Sqrt(Math.Pow(point1.X - point2.X, 2) + Math.Pow(point1.Y - point2.Y, 2));return distance;
}

点到线的距离:

using OpenCvSharp;/// <summary>
/// 点到直线距离
/// </summary>
/// <param name="point">点</param>
/// <param name="line">两点组成直线</param>
/// <returns>距离</returns>
private double Distance_Point2Line(Point2d point, Point2d[] line)
{Point2d lineStart = line[0];Point2d lineEnd = line[1];// 以lineStart到lineEnd为直线,直线方程AX+BY+C=0double A = lineStart.Y - lineEnd.Y;double B = lineEnd.X - lineStart.X;double C = lineStart.X * lineEnd.Y - lineStart.Y * lineEnd.X;double distance = Math.Abs(A * point.X + B * point.Y + C) / Math.Sqrt(Math.Pow(A, 2) + Math.Pow(B, 2));return distance;
}

平移操作:

using OpenCvSharp;/// <summary>
/// 平移操作
/// </summary>
/// <param name="point_lst">点集</param>
/// <param name="originalPoint">新坐标系的原点</param>
/// <returns>点集</returns>
private List<Point2d> Translated_Option(List<Point2d> point_lst, Point2d originalPoint)
{List<Point2d> lst = new List<Point2d>();foreach(Point2d p in point_lst){Point2d pz = new Point2d(p.X - originalPoint.X, p.Y - originalPoint.Y);lst.Add(pz);}return lst;
}

缩放操作:

using OpenCvSharp;/// <summary>
/// 缩放操作
/// </summary>
/// <param name="point_lst">点集</param>
/// <param name="originalPoint">缩放的中心点</param>
/// <param name="scaleFactor">缩放因子</param>
/// <returns>点集</returns>
private List<Point2d> Scale_Option(List<Point2d> point_lst, Point2d originalPoint, double scaleFactor)
{List<Point2d> lst = new List<Point2d>();foreach (Point2d p in point_lst){double X = (p.X - originalPoint.X) * scaleFactor + originalPoint.X;double Y = (p.Y - originalPoint.Y) * scaleFactor + originalPoint.Y;Point2d pz = new Point2d(X, Y);lst.Add(pz);}return lst;
}


 

旋转操作:

using OpenCvSharp;/// <summary>
/// 旋转操作
/// </summary>
/// <param name="point_lst">点集</param>
/// <param name="originalPoint">旋转的中心点</param>
/// <param name="radian">偏转角的弧度值</param>
/// <returns>点集</returns>
private List<Point2d> Rotate_Option(List<Point2d> point_lst, Point2d originalPoint, double radian)
{List<Point2d> lst = new List<Point2d>();foreach (Point2d p in point_lst){double _X = p.X - originalPoint.X;double _Y = p.Y - originalPoint.Y;double X_ = _X * Math.Cos(radian) + _Y * Math.Sin(radian);double Y_ = _Y * Math.Cos(radian) - _X * Math.Sin(radian);double X = X_ + originalPoint.X;double Y = Y_ + originalPoint.Y;Point2d pz = new Point2d(X, Y);lst.Add(pz);}return lst;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458969.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战应用WPS WebOffice开放平台服务

概述 根据公司的业务需要&#xff0c;主要功能是在线编辑文档&#xff0c;前端的小伙伴进行的技术调研&#xff0c;接入的是WPS WebOffice&#xff0c;这里只阐述技术介入的步骤、流程和遇到的坑进行的一些总结。 实践 WPS WebOffice 开放平台进行认证 在开始之前&#xff…

大数据-193 Apache Tez - DAG 作业计算框架 核心解释 工作原理 配置集成

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Anki插件Export deck to html的改造

在Anki中进行复习时&#xff0c;每次只能打开一条笔记。如果积累了很多笔记&#xff0c;有时候会有将它们集中输出成一个pdf进行阅读的想法。Anki插件Export deck to html&#xff08;安装ID&#xff1a;1897277426&#xff09;就有这个功能。但是&#xff0c;这个插件目前存在…

岛津分子泵软件TMP系列分子泵EI-D系列控制电源 EI Monitor(232和485控制)

岛津分子泵软件TMP系列分子泵EI-D系列控制电源 EI Monitor(232和485控制)

探索Unity:从游戏引擎到元宇宙体验,聚焦内容创作

unity是实时3D互动内容创作和运营平台&#xff0c;包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者&#xff0c;借助Unity将创意变成现实。提供一整套完善的软件解决方案&#xff0c;可用于创作、运营和变现任何实时互动的2D和3D内容&#xff0c;支持平台包括手机、…

图为大模型一体机新探索,赋能智能家居行业

在21世纪的今天&#xff0c;科技的飞速进步正以前所未有的速度重塑着我们的生活方式。从智能手机到物联网&#xff0c;从大数据到人工智能&#xff0c;每一项技术创新都在为人类带来前所未有的便利与效率。其中&#xff0c;图为AI大模型一体机作为人工智能领域的最新成果&#…

DiskGenius一键修复磁盘损坏

下午外接磁盘和U盘都出现扇区损坏&#xff0c;估计就是在开着电脑&#xff0c;可能是电脑运行的软件还在对磁盘进行读写&#xff0c;不小心按到笔记本关机键&#xff0c;重新开机读写磁盘分区变得异常卡顿&#xff0c;估摸就是这个原因导致扇区损坏。在进行读写时&#xff0c;整…

深度学习:YOLO v1网络架构、损失值及NMS极大值抑制

引言 随着深度学习的发展&#xff0c;物体检测&#xff08;Object Detection&#xff09;成为计算机视觉领域的一项重要任务。传统的物体检测方法往往依赖于手工设计的特征和滑窗搜索策略&#xff0c;效率低下且效果有限。近年来&#xff0c;基于深度学习的方法&#xff0c;尤…

leetcode-63-不同陆路径II

题解&#xff1a; 1、设dp[i][j]为到达(i,j)点的路径。当grid[i][j]1时,dp[i][j]0;否则dp[i][j]为到达(i-1,j)的最多路径与到达(i,j-1)的最多路径之和。当(i,j)位于第一行时&#xff0c;dp[i][j]dp[i][j-1]。当(i,j)位于第一列时&#xff0c;dp[i][j]dp[i-1][j]。 2、初始化M…

MATLAB锂电概率分布模型

&#x1f3af;要点 概率分布等效电路模型结合了路径相关速率能力及状态估计中滞后效应。纠正了充电状态中时间误差累积及避免开路电压中电压滞后现象。使用电流方向和电池容量相关函数描述开路电压&#xff0c;并使用微分方程描述电压滞后现象。模型结构基于一级相变的材料机制…

新华三H3CNE网络工程师认证—OSPF路由协议

OSPF是典型的链路状态路由协议&#xff0c;是目前业内使用非常广泛的IGP协议之一。本博客将对OSPF路由协议进行总结。 OSPF目前针对IPv4协议使用的是OSPFVersion2(RFC2328)&#xff1b; 针对IPv6协议使用OSPFVersion3(RFC2740)。如无特殊说明本章后续所指的OSPF均为OSPF Versi…

监督学习之逻辑回归

逻辑回归&#xff08;Logistic Regression&#xff09; 逻辑回归是一种用于二分类&#xff08;binary classification&#xff09;问题的统计模型。尽管其名称中有“回归”二字&#xff0c;但逻辑回归实际上用于分类任务。它的核心思想是通过将线性回归的输出映射到一个概率值…

【MATLAB源码-第193期】基于matlab的网络覆盖率NOA优化算法仿真对比VFINOA,VFPSO,VFNGO,VFWOA等算法。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 NOA&#xff08;Network Optimization Algorithm&#xff0c;网络优化算法&#xff09;是一个针对网络覆盖率优化的算法&#xff0c;它主要通过优化网络中节点的分布和配置来提高网络的整体覆盖性能。网络覆盖率是衡量一个无…

基于STM32G0的USB PD协议学习(3)

0、前言 STM32这个平台资源确实很不错&#xff0c;但是里面的PD代码是一个lib库文件&#xff0c;没有开源。可以做来玩玩&#xff0c;但是如果要满足USB-IF认证需求的话&#xff0c;谨慎&#xff01;&#xff01;&#xff01; 这段时间较为繁忙&#xff0c;断更有点严重... …

植物健康,Spring Boot来保障

5系统详细实现 5.1 系统首页 植物健康系统需要登录才可以看到首页。具体界面的展示如图5.1所示。 图5.1 系统首页界面 5.2 咨询专家 可以在咨询专家栏目发布消息。具体界面如图5.2所示。 图5.2 咨询专家界面 5.3 普通植物检查登记 普通员工可以对普通植物检查登记信息进行添…

Linux之权限(2)

权限&#xff08;2&#xff09; 操作&#xff1a;有VS没有 只有文件的拥有者或者root&#xff0c;能修改自己的权限 Linux下能执行真的是一个可执行文件可执行权限 user,group,other和我自己进行身份对比&#xff0c;依次只对比一次 8进制数值表示方法 chmod ax /home/abc.…

基于vue、VantUI、django的程序设计

首先构建vue项目&#xff0c;构建项目点这里 安装 npm install axios axios简介 Axios 是一个基于 promise 的 HTTP 库&#xff0c;用于发起请求和接收响应&#xff0c;实现异步操作 基本使用 axios对象 请求响应拦截 在utils文件夹里新建ajax.js 创建一个axios对象并…

云智慧完成华为原生鸿蒙系统的适配, 透视宝 APM 为用户体验保驾护航

2024 年 10 月 22 日&#xff0c;首个国产移动操作系统 —— 华为原生鸿蒙操作系统 HarmonyOS NEXT 正式面世&#xff0c;成为继 iOS 和 Android 后的全球第三大移动操作系统。HarmonyOS NEXT&#xff0c;从系统内核、数据库根基&#xff0c;到编程语言创新、AI&#xff08;人工…

【WebGis开发 - Cesium】三维可视化项目教程---图层管理拓展图层透明度控制

目录 引言一、为什么要开发图层透明度控制功能二、开发思路整理1. cesium图层api查询1.1 imageryLayer 透明度1.2 primitive 透明度 三、代码编写1. 修改原有图层管理代码2. 新增页面结构3. 编写图层透明度控制方法 四、总结 引言 本教程主要是围绕Cesium这一开源三维框架开展的…

如何通过sip信令以及抓包文件分析媒体发到哪个地方

前言 问题描述&#xff1a;A的媒体没转发到B&#xff0c;B只能听到回铃音&#xff0c;没有A的说话声音&#xff0c;并且fs这边按正常的信令发送了. 分析流程 分析早期媒体发送到哪一个IP 10.19.0.1发送了一个请求给10.19.0.157这个IP&#xff0c;然而这里的SDP媒体地址&am…