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

opencv 轮廓顶点重新排序----四边形

def reorder(myPoints):# print(myPoints.shape)# 创建一个与myPoints具有相同形状和类型的数组myPointsNew = np.zeros_like(myPoints)# 数组重塑为一个4行2列的数组myPoints = myPoints.reshape((4,2))# 计算myPoints数组中每一行(即每个点)的坐标和add = myPoints.sum(1)# 找出和最小的点(左上角点),将其设置为新数组的第一个点myPointsNew[0] = myPoints[np.argmin(add)]# 找出和最大的点(右下角点),将其设置为新数组的第四个点。myPointsNew[3] = myPoints[np.argmax(add)]# 计算每一行(每个点)的坐标之间的差异,得到一个4x1的数组。diff = np.diff(myPoints,axis=1)# 找到差异最小的点(做下角点),将其设置为新数组的第二个点。myPointsNew[1] = myPoints[np.argmin(diff)]# 找到差异最大的点(右下角点),将其设置为新数组的第三个点。myPointsNew[2] = myPoints[np.argmax(diff)]return myPointsNew

这个函数的操作步骤如下:
创建一个与输入数组 myPoints 具有相同形状的空数组 myPointsNew,用于存储重新排列后的角点。
将输入的 myPoints 数组重新排列为一个 4x2 的数组,其中每一行包含一个点的x和y坐标。
计算每个点的x和y坐标之和,以确定左上角和右下角的点。add数组包含了这些和值。
通过找到和最小的点和和最大的点来确定左上角和右下角的点。
计算每个点的x和y坐标之差,以确定左下角和右上角的点。diff 数组包含了这些差值。
通过找到差值最小的点和差值最大的点来确定左下角和右上角的点。
最终,函数返回一个包含重新排列后的四个角点的数组 myPointsNew,这样你就可以使用这些点来进行后续的操作,如透视变换。

http://www.lryc.cn/news/166714.html

相关文章:

  • 【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)
  • 分布式运用之rsync远程同步
  • 誉天在线项目~ElementPlus实现浏览页面注意点
  • 神经网络-pytorch版本
  • uniapp vue 页面传参问题encodeURIComponent
  • 【GDAL】tif影像拼接和目标截取
  • ARM核心时间线
  • 【Redis】深入探索 Redis 的数据类型 —— 列表 List
  • 高精度乘除法(超详细)
  • List 获取前N条数据
  • Spring入门控制反转(或依赖注入)AOP的关键概念 多配置文件与web集成
  • 排序算法-希尔排序
  • ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”(一)
  • 华为GaussDB数据库
  • Flink、Spark、Hive集成Hudi
  • 百度编辑器 Ueditor 视频上传时 目录创建失败 解决办法
  • Go 字符串处理
  • 家政服务接单小程序开发源码 家政保洁上门服务小程序源码 开源完整版
  • SuperMap iClient3D 11i (2023) SP1 for Cesium之移动实体对象
  • 【深度学习 AIGC】stablediffusion-infinity 在无界限画布中输出绘画 Outpainting
  • Flutter插件之阿里百川
  • ✔ ★ 算法基础笔记(Acwing)(三)—— 搜索与图论(17道题)【java版本】
  • 初试占比70%,计算机招生近200人,安徽理工大学考情分析
  • LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释
  • 【C刷题】day2
  • Apollo源码安装的问题及解决方法
  • Flutter 挖孔屏的状态栏占用问题怎么解决,横屏后去掉了状态栏,还是会有一块黑色的竖条
  • Layui快速入门之第九节 表格事件的使用
  • [2023.09.14]: Rust的条件编译
  • 数据清洗:数据挖掘的前期准备工作