轮廓提取、矩形标记时,点的位置需要重标

在下图中的0,3,1,2位置如何变换成0,1,2,3

先显示结果:

变换之后图:

这边提供两种解决方案:

第一种:将坐标值相加求和,采用冒泡排序实现从小到大排序,此时能确定两点位置,一是0二是3位置,对于副对角线上12两点,需要进一步判断,这边图片明显点2位置的x值距离0点相对1点来说更近,因此可以判断出1,2点。从而实现。

代码实现:

for (int j = 0; j < sumPoints.size(); j++) {for (int i = 1; i < sumPoints.size(); i++) {if (sumPoints[j] > sumPoints[i]) {newPoints = points[i];points[i] = points[j];points[j] = newPoints;}}}
if (points[1].x - points[0].x < points[2].x - points[0].x) {Point p;p = points[1];points[1] = points[2];points[2] = p;
}

第二种:采用min_elemen(),和max_element()两个函数,首先两个函数的理解进行解释:

min_elemen(数组开始位置,数组结束位置)函数返回的最小值的指针,这个要注意。

int a[] = { 42, 13, 12, 68, 25, 6, 5, 32 };int len = sizeof(a) / sizeof(int);auto s1 = max_element(a, a + len);auto s2 = min_element(a, a + len);cout << s1 << endl;    //指向值最大的元素的地址cout << s2 << endl;    //指向值最小的元素的地址cout << *s1 << endl;   //值最大的元素cout << *s2 << endl;   //值最小的元素cout << s1 - a << endl; //值最大的元素的索引cout << s2 - a << endl; //值最小的元素的索引

因此就有一种思想:对于0,3点,xy相加的值的值分别最小最大,而对于1,2两点,xy相减值分别最小最大。只需把角标提取,放入新的点集,继而读出即可。

代码实现:

	for (int i = 0; i < points.size(); i++) {cout << points[i].x << ", " << points[i].y << endl;sumPoints.push_back(points[i].x + points[i].y);cout << sumPoints[i] << endl;}for (int i = 0; i < points.size(); i++) {subPoints.push_back(points[i].x - points[i].y);cout << subPoints[i] << endl;}
	newPoints.push_back(points[min_element(sumPoints.begin(),sumPoints.end()) - sumPoints.begin()]);newPoints.push_back(points[max_element(subPoints.begin(), subPoints.end()) - subPoints.begin()]);newPoints.push_back(points[min_element(subPoints.begin(), subPoints.end()) - subPoints.begin()]);newPoints.push_back(points[max_element(sumPoints.begin(), sumPoints.end()) - sumPoints.begin()]);

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

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

相关文章

使用固定公网地址远程访问开源服务器运维管理面板1Panel管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器&#xff0c;包括主机监控、…

Excel文件解析---超大Excel文件读写

1.使用POI写入 当我们想在Excel文件中写入100w条数据时&#xff0c;使用XSSFWorkbook进行写入时会发现&#xff0c;只有将100w条数据全部加载到内存后才会用write()方法统一写入&#xff0c;效率很低&#xff0c;所以我们引入了SXXFWorkbook进行超大Excel文件读写。 通过设置 …

C语言leetcode刷题笔记1

C语言leetcode刷题笔记1 第1题&#xff1a;136.只出现一次的数字两次遍历&#xff08;O(numsSize^2)&#xff09;位运算 第2题&#xff1a;202.快乐数快慢指针记录历史数据 第3题&#xff1a;53.最大子数组和暴力求解&#xff08;超时&#xff09;动态规划分治 第1题&#xff1…

每日Attention学习3——Cross-level Feature Fusion

模块出处 [link] [code] [PR 23] Cross-level Feature Aggregation Network for Polyp Segmentation 模块名称 Cross-level Feature Fusion (CFF) 模块作用 双级特征融合 模块结构 模块代码 import torch import torch.nn as nnclass BasicConv2d(nn.Module):def __init__(…

PLC学习笔记

PLC学习笔记 前言一、一些基操知识二、GX works2编程2.1 位逻辑1.2 中间寄存器1.3 PLC的扫描方式 总结 前言 我这个人真的是太渴望知识了~ 一、一些基操知识 一般X表示输入&#xff0c;Y表示输出。一般八个为一组X0~X7M表示中间寄存器&#xff0c;M0~M7时间T、计数C 二、GX …

BiTCN:基于卷积网络的多元时间序列预测

在时间序列预测领域中&#xff0c;模型的体系结构通常依赖于多层感知器(MLP)或Transformer体系结构。 基于mlp的模型&#xff0c;如N-HiTS, TiDE和TSMixer&#xff0c;可以在保持快速训练的同时获得非常好的预测性能。基于Transformer的模型&#xff0c;如PatchTST和ittransfo…

【面经】网络

了解TCP/IP协议,了解常用的网络协议&#xff1a;study-area 一、TCP/IP协议 TCP/IP协议是一组网络通信协议&#xff0c;旨在实现不同计算机之间的信息传输。 1、TCP/IP四层模型&#xff1a; 网络接口层、网络层、传输层和应用层。 网络接口层&#xff1a;定义了数据的格式和…

Python | Leetcode Python题解之第67题二进制求和

题目&#xff1a; 题解&#xff1a; class Solution:def addBinary(self, a, b) -> str:return {0:b}.format(int(a, 2) int(b, 2))

python面向函数

组织好的&#xff0c;可重复利用的&#xff0c;用来实现单一&#xff0c;或相关联功能的代码段&#xff0c;避免重复造轮子&#xff0c;增加程序复用性。 定义方法为def 函数名 (参数) 参数可动态传参&#xff0c;即使用*args代表元组形式**kwargs代表字典形式&#xff0c;代替…

python编程“常识”【pip安装路径、计算、pycharm中的terminal运行前面的PS修改成自己环境】

一、默认的pip install包路径&#xff1a; pip show pip 二、计算 打开cmd&#xff0c;输入&#xff1a; ipython 例如你要计算2的13次方&#xff1a; ok. 三、pycharm中的terminal运行前面的PS修改成自己环境 未修改前&#xff1a; 修改过程&#xff1a; 打开设置找到too…

vscode中配置 leetcode 插件

1. 环境准备 插件安装介绍 介绍 VS Code 1.23.0 Node.js 10 注意&#xff1a;请确保Node在PATH环境变量中。您也可以通过设定 leetcode.nodePath 选项来指定 Node.js 可执行文件的路径。 1.1 Node.js 安装 首先&#xff0c;您需要解压下载的 .tar.xz 文件。您可以使用以下…

介绍华为云 了解华为云

引言 华为云作为全球领先的云服务提供商&#xff0c;为用户提供高性能、高可靠的云计算服务。在部署应用程序时&#xff0c;合理利 用华为云服务器的资源&#xff0c;能够实现更高效的运行和管理。 选择华为云服务器 华为云服务器提供多种配置和规格选择&#xff0c;用户可根据…

每日OJ题_贪心算法三⑦_力扣991. 坏了的计算器

目录 力扣991. 坏了的计算器 解析代码 力扣991. 坏了的计算器 991. 坏了的计算器 难度 中等 在显示着数字 startValue 的坏计算器上&#xff0c;我们可以执行以下两种操作&#xff1a; 双倍&#xff08;Double&#xff09;&#xff1a;将显示屏上的数字乘 2&#xff1b;递…

ARM(2)ARMv8基础知识

目录 一、异常 1.1异常等级的定义 1.2异常的种类 1.2.1同步异常和异步异常 1.3改变异常等级 1.4异常后的处理 1.4.1异常处理相关寄存器 1.4.2系统调用 1.4.3对EL2/EL3的系统调用 1.4.4异常返回 1.4.5异常处理流程 二、安全状态 三、执行状态 本文介绍以下内容&…

又一个限时免费生成图片的AI平台

网址 https://jimeng.jianying.com/ai-tool/image/generate 抖音官方的文升图&#xff0c;用抖音登录就可以&#xff0c;每天送60积分&#xff0c;目前看文生图好像是限时免费。 随手试了一下&#xff0c;速度很快&#xff0c;质量也还可以&#xff0c;背靠大厂&#xff0c;…

[MQTT]Mosquitto的內網連接(intranet)和使用者/密碼權限設置

[MQTT | Raspberry Pi]Publish and Subscribe with RSSI Data of Esp32 on Intranet 延續[MQTT]Mosquitto的簡介、安裝與連接測試文章&#xff0c;接著將繼續測試在內網的兩台機器是否也可以完成發佈和訂閱作業。 同一網段的兩台電腦測試: 假設兩台電腦的配置如下: A電腦為發…

【JAVA基础之装箱和拆箱】自动装箱和自动拆箱

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.包装类 1.1 概述 1.2 Integer类 1.3 装箱和拆箱 1.4 自动装箱和自动拆箱 1.5 基本类型与字符串之间的转换 1.5.1 基本类型转换为字符串 1.5.2 字符串转…

(24)实时采集微信消息(基于独立窗体)-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙 出品 | CSDN&#xff08;ID&#xff1a;lichao19897314&#xff09; Q Q | 978124155 往期知识回顾 (1)开启探索微信自动化之路-微信UI自动化(.NetC#) (2)初始化微信窗体UI自动化实例-微信UI自动化(.NetC#) (3)采用热键终止微信采集任务-微信UI自动…

JavaScript初了解

JS的三种书写位置&#xff1a;行内&#xff0c;内嵌&#xff0c;外部 JS的注释的书写&#xff1a;单行注释&#xff1a;// ctrl/ 多行注释&#xff1a;/**/ ShiftAltA JavaScript输入输出语句

【热门话题】如何通过AI技术提升内容生产的效率与质量

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 如何通过AI技术提升内容生产的效率与质量引言一、自然语言处理&#xff08;NLP&…