除了用标准文字检测数据集时,自己的数据集有时文字框点的顺序会不按照顺时针或者逆时针。这会导致训练报错或者可视化时出现问题。

我没找到很方便的代码,所以提供一下我自己写的这个代码,可以将文字框的四个点调整为顺时针或者逆时针,不确定是哪种,但是已经足够了。

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]]

调整文字框顺序,返回顺时针或逆时针顺序相关推荐

  1. 判断三点顺序(顺时针或者逆时针)(模板)

    #include <bits/stdc++.h> using namespace std; int main() { double x1, y1, x2, y2, x3, y3; whil ...

  2. devexpress textedit调整文字何文本框的间距_手把手教学:用PPT做效果超赞的文字效果...

    本文总计:2391 字 预计阅读时间:6 分钟 昨天文章的头图,貌似反馈还不错,挺多人比较感兴趣. 所以,今天就分享一下,这种文字排版效果,是怎么做出来的. 而且今天的实现手法与效果,做了一些优化,比 ...

  3. opencv将坐标点按逆时针顺序存放

    opencv将坐标点按逆时针顺序存放 在做项目的时候有时需要对轮廓点按照顺时针或者逆时针存储,假设坐标点保存的数据类型是vector<Point>,现在将其按照逆时针的顺序存放,废话不多说 ...

  4. Android Studio怎么设置悬浮提示文字框显示函数

    [摘要]AndroidStudio函数悬浮提示文字框设置方法一:AndroidStudio在默认情况下是不会和Eclipse那样,鼠标移动到一个类或... Android Studio函数悬浮提示文字 ...

  5. 燕秀计算机打印区域文字高度,CAD 让文字显示在指定区域,自动根据文字内容调整文字高度...

    CAD 让文字显示在指定区域,自动根据文字内容调整文字高度 '********************************************************************* ...

  6. 【LaTeX】 案例分析 (9) - MCM 2021 - 目录 / 伪代码 / 分栏 / 文字框 / 组合图 / 表格排版 / 公式编号

    小组选择题目为 MCM 2021 - A题 Fungi (真菌) Final Result: Honorable Mention 注: 其中很多环境运用到的环境所需宏包(package)可能不太清楚了 ...

  7. 根据起点、终点、半径、优弧、劣弧、顺时针和逆时针等要求,线性方程解圆心(C语言)

    根据起点.终点.半径.优弧.劣弧.顺时针和逆时针等要求,线性方程解圆心(C语言). 在求解过程当中,可能会求得两个圆心(一元二次方程解),这时候就需要判断是那个圆心,按照条件,总共也就以下4种情况: ...

  8. 面试题6:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    题目 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 思路 使用栈依次存放输入的链表顺序的值,然后依次出栈便是链表的逆序. 代码 import java.util.ArrayList ...

  9. element-- 修改MessageBox 弹框 中确定和取消按钮顺序

    需求:修改弹框中的 取消/确定按钮顺序,及头部和底部背景颜色; 原ui效果图 需求ui效果图 方法:对取消及确定按钮自定义类名,样式重写 转载于:https://www.cnblogs.com/xin ...

最新文章

  1. 语义分割-- SegNet:A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation
  2. 简述Docker过去6个月的变化
  3. 2017 清北济南考前刷题Day 2 afternoon
  4. OpenGL 绘图移动
  5. Storing XML in Relational Databases(2)
  6. 以《英雄联盟》为例,看影响MOBA游戏策略的3个层面
  7. Python通过LDAP验证、查找用户(class,logging)
  8. 写在通用权限管理系统销售200套,从刚开始求人家用到人家主动索取,写一下亲身感受...
  9. subclipse同步冲突问题A conflict in the working copy obstructs the current operation
  10. idea合并svn不同分支_如何在Intellij IDEA中使用svn合并分支到主干?
  11. FusionCharts的使用方法
  12. PAT 1055 集体照 python
  13. 洛谷 P3403 跳楼机
  14. 【土旦】在vue filters中 优雅的使用对象的key、value来替换 if switch多重判断简化流程...
  15. 阿里云体验--搭建超级小班课网课系统
  16. Nature综述:宏基因组测序研究耐药基因的方法和资源
  17. Java使用Spire.Pdf实现PDF添加图片水印
  18. Yandex企业邮箱注册
  19. MySQL表空间简介
  20. CCF推荐|JCR4区通信网络类SCI,仅1-2个月左右录用~

热门文章

  1. app小程序手机端Python爬虫实战06UiSelector文本、className定位方式
  2. $size 和$bits 的区别
  3. 计算机专业实习生一般做什么
  4. imaplib 模块登陆163邮箱及下载
  5. 《python编程快速上手 让繁琐工作自动化》第四章 实践项目
  6. 商城-商品搜索(Elasticsearch、IK分词器、Kibana使用)
  7. 黑鹰的学习网站--感兴趣的可以去看看
  8. 联想sr850服务器文档,势不可挡 LenovoThinkSystem SR850给你信心
  9. Kalendae多选日历插件
  10. 日程表mysql_web编程之日程表模块(PHP+Mysql+Ajax)