调整文字框顺序,返回顺时针或逆时针顺序
除了用标准文字检测数据集时,自己的数据集有时文字框点的顺序会不按照顺时针或者逆时针。这会导致训练报错或者可视化时出现问题。
我没找到很方便的代码,所以提供一下我自己写的这个代码,可以将文字框的四个点调整为顺时针或者逆时针,不确定是哪种,但是已经足够了。
def revise_point_seq2(poly):'''对点的顺序进行修正,确保是瞬时间或者逆时针顺序:param poly: np.array( [ [x1,y1], [x2,y2], [x3,y3], [x4,y4]
] ):return: np.array( [ [x1,y1], [x2,y2], [x3,y3], [x4,y4] ] )方法步骤:1、找到第一个点;2、连线,找到第三个点,第三个点和第一个点连线会分割剩下两个点;'''# print(poly)del_poly = poly.copy()p_capacity = np.array([x + y for [x, y] in poly])idx_first = np.argmin(p_capacity)[nx1, ny1] = poly[idx_first]del del_poly[idx_first][[tx2, ty2], [tx3, ty3], [tx4, ty4]] = del_polyif nx1 == tx2:z2 = np.polyfit([nx1, nx1 + 1e-6], [ny1, ty2], 1)else:z2 = np.polyfit([nx1, tx2], [ny1, ty2], 1)if nx1 == tx3:z3 = np.polyfit([nx1, nx1 + 1e-6], [ny1, ty3], 1)else:z3 = np.polyfit([nx1, tx3], [ny1, ty3], 1)if nx1 == tx4:z4 = np.polyfit([nx1, nx1 + 1e-6], [ny1, ty4], 1)else:z4 = np.polyfit([nx1, tx4], [ny1, ty4], 1)if (ty3 - (tx3*z2[0] + z2[1]))*(ty4 - (tx4*z2[0] + z2[1])) <
0:key = 0elif (ty2 - (tx2*z3[0] + z3[1]))*(ty4 - (tx4*z3[0] + z3[1]))
< 0:key = 1else:key = 2[nx3, ny3] = del_poly[key]del del_poly[key][nx2, ny2] = del_poly[0][nx4, ny4] = del_poly[1]return [[nx1, ny1], [nx2, ny2], [nx3, ny3], [nx4, ny4]]
调整文字框顺序,返回顺时针或逆时针顺序相关推荐
- 判断三点顺序(顺时针或者逆时针)(模板)
#include <bits/stdc++.h> using namespace std; int main() { double x1, y1, x2, y2, x3, y3; whil ...
- devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...
本文总计:2391 字 预计阅读时间:6 分钟 昨天文章的头图,貌似反馈还不错,挺多人比较感兴趣. 所以,今天就分享一下,这种文字排版效果,是怎么做出来的. 而且今天的实现手法与效果,做了一些优化,比 ...
- opencv将坐标点按逆时针顺序存放
opencv将坐标点按逆时针顺序存放 在做项目的时候有时需要对轮廓点按照顺时针或者逆时针存储,假设坐标点保存的数据类型是vector<Point>,现在将其按照逆时针的顺序存放,废话不多说 ...
- Android Studio怎么设置悬浮提示文字框显示函数
[摘要]AndroidStudio函数悬浮提示文字框设置方法一:AndroidStudio在默认情况下是不会和Eclipse那样,鼠标移动到一个类或... Android Studio函数悬浮提示文字 ...
- 燕秀计算机打印区域文字高度,CAD 让文字显示在指定区域,自动根据文字内容调整文字高度...
CAD 让文字显示在指定区域,自动根据文字内容调整文字高度 '********************************************************************* ...
- 【LaTeX】 案例分析 (9) - MCM 2021 - 目录 / 伪代码 / 分栏 / 文字框 / 组合图 / 表格排版 / 公式编号
小组选择题目为 MCM 2021 - A题 Fungi (真菌) Final Result: Honorable Mention 注: 其中很多环境运用到的环境所需宏包(package)可能不太清楚了 ...
- 根据起点、终点、半径、优弧、劣弧、顺时针和逆时针等要求,线性方程解圆心(C语言)
根据起点.终点.半径.优弧.劣弧.顺时针和逆时针等要求,线性方程解圆心(C语言). 在求解过程当中,可能会求得两个圆心(一元二次方程解),这时候就需要判断是那个圆心,按照条件,总共也就以下4种情况: ...
- 面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序. 代码 import java.util.ArrayList ...
- element-- 修改MessageBox 弹框 中确定和取消按钮顺序
需求:修改弹框中的 取消/确定按钮顺序,及头部和底部背景颜色; 原ui效果图 需求ui效果图 方法:对取消及确定按钮自定义类名,样式重写 转载于:https://www.cnblogs.com/xin ...
最新文章
- 语义分割-- SegNet:A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
- 简述Docker过去6个月的变化
- 2017 清北济南考前刷题Day 2 afternoon
- OpenGL 绘图移动
- Storing XML in Relational Databases(2)
- 以《英雄联盟》为例,看影响MOBA游戏策略的3个层面
- Python通过LDAP验证、查找用户(class,logging)
- 写在通用权限管理系统销售200套,从刚开始求人家用到人家主动索取,写一下亲身感受...
- subclipse同步冲突问题A conflict in the working copy obstructs the current operation
- idea合并svn不同分支_如何在Intellij IDEA中使用svn合并分支到主干?
- FusionCharts的使用方法
- PAT 1055 集体照 python
- 洛谷 P3403 跳楼机
- 【土旦】在vue filters中 优雅的使用对象的key、value来替换 if switch多重判断简化流程...
- 阿里云体验--搭建超级小班课网课系统
- Nature综述:宏基因组测序研究耐药基因的方法和资源
- Java使用Spire.Pdf实现PDF添加图片水印
- Yandex企业邮箱注册
- MySQL表空间简介
- CCF推荐|JCR4区通信网络类SCI,仅1-2个月左右录用~
热门文章
- app小程序手机端Python爬虫实战06UiSelector文本、className定位方式
- $size 和$bits 的区别
- 计算机专业实习生一般做什么
- imaplib 模块登陆163邮箱及下载
- 《python编程快速上手 让繁琐工作自动化》第四章 实践项目
- 商城-商品搜索(Elasticsearch、IK分词器、Kibana使用)
- 黑鹰的学习网站--感兴趣的可以去看看
- 联想sr850服务器文档,势不可挡 LenovoThinkSystem SR850给你信心
- Kalendae多选日历插件
- 日程表mysql_web编程之日程表模块(PHP+Mysql+Ajax)