一.MSRA-TD500 : http://www.iapr-tc11.org/mediawiki/index.php/MSRA_Text_Detection_500_Database_%28MSRA-TD500%29

#coding:utf-8
"""
fzh created on 2019/12/6
将MSRA-TD500数据标签转换成按逆时针输出
也即 
index,difficulty label,x,y,w,h,0 -->>x1,y1,x2,y2,x3,y3,x4,y4
"""
import os
from math import *
import cv2
import numpy as npdef xy_rotate(angle,x,y,cx,cy):"""点(x,y) 绕(cx,cy)点旋转"""# angle = angle*pi/180#传入的已经是弧度了x_new = (x-cx)*cos(angle) - (y-cy)*sin(angle)+cxy_new = (x-cx)*sin(angle) + (y-cy)*cos(angle)+cyreturn x_new,y_newdef rec_rotate(x, y, width, height, theta):"""传入矩形的x,y和宽度高度,弧度,转成QUAD格式:param x::param y::param width::param height::param theta::return:"""centerx = x + width / 2centery = y + height / 2x1, y1 = xy_rotate(theta, x, y, centerx, centery)x2, y2 = xy_rotate(theta, x + width, y, centerx, centery)x3, y3 = xy_rotate(theta, x, y + height, centerx, centery)x4, y4 = xy_rotate(theta, x + width, y + height, centerx, centery)return list(map(int,[x1, y1, x3, y3, x4, y4, x2, y2]))#逆时针输出
def make_standard_txt():"""制作逆时针的polygon标签:return:"""path = './test/'gt_lists_path = [os.path.join(path, i) for i in os.listdir(path) if '.gt' in i]for i, gt_list_path in enumerate(gt_lists_path):# if i < 1:print('gt_list_path:', gt_list_path)labels = []with open(gt_list_path, 'r', encoding='utf-8') as file:for read_info in file:print('read_info:', read_info)line = list(map(float, read_info.strip().split(' ')))print('line:', line)x, y = line[2], line[3]w, h = line[4], line[5]points = [x, y, x, y + h, x + w, y + h, x + w, y]pointsrotate = rec_rotate(x, y, w, h, line[-1])str_point = ','.join(map(str, pointsrotate)) + ',###'print('str_point:', str_point)labels.append(str_point)savename = gt_list_path[0:-2] + 'txt'print('savename:', savename)with open(savename, 'w', encoding='utf-8') as wfile:[wfile.write(label + '\n') for label in labels]
def read_val():"""将make_standard_txt函数制作的polygon进行验证:return:"""txt_path = './train/IMG_0723.txt'img_path = txt_path.replace('.txt', '.JPG')img = cv2.imread(img_path)print('img.shape:', img.shape)with open(txt_path, 'r', encoding='utf-8') as rfile:for j,read_info in enumerate(rfile):# if j<1:print('read_info:', read_info)point = list(map(int, read_info.strip().split(',')[:-1]))print('point:', point)#需要变成顺时针才用cv2.polylines显示point = [point[0], point[1], point[-2],point[-1], point[4], point[5], point[2], point[3]]cv2.polylines(img, [np.array(point).reshape(-1, 1, 2)], True, (0, 255, 0), thickness=5)cv2.imwrite('img.jpg', img)
if __name__ == '__main__':make_standard_txt()# read_val()

转换成逆时针:

二.labeleme json格式转四个点(顺时针)的txt

import os
import json
import cv2
import numpy as np#校正顺时针的四个点 从左上角开始
def cal_stand_points(points):rect = np.zeros((4, 2))s = np.sum(points, axis=1)rect[0] = points[np.argmin(s)]rect[2] = points[np.argmax(s)]# the top-right point will have the smallest difference,# whereas the bottom-left will have the largest differenced = np.diff(points, axis=1)rect[1] = points[np.argmin(d)]rect[3] = points[np.argmax(d)]return rect
def lableme_json_txt():path ='./效果差的_去章'imgs_list_path = [os.path.join(path, i) for i in os.listdir(path) if '.jpg' in i]print('==len(imgs_list_path)', len(imgs_list_path))for i, img_list_path in enumerate(imgs_list_path):# if i<1:json_list_path = img_list_path.replace('.jpg', '.json')output_txt_path = img_list_path.replace('.jpg', '.txt')with open(json_list_path, 'r') as file:json_info = json.load(file)print('===json_info', json_info)shapes = json_info['shapes']output_points = []for shape in shapes:points = np.array(shape['points']).astype(np.int)points = cal_stand_points(points)print('===points', points)output_points.append(list(map(str, (points.reshape(-1).tolist()))))print('===output_points', output_points)with open(output_txt_path, 'w', encoding='utf-8') as file:[file.write(','.join(out) + ',###\n') for out in output_points]if __name__ == '__main__':lableme_json_txt()

将MSRA-TD500标签转换成逆时针输出标签+labeleme json格式转四个点的txt相关推荐

  1. python 列表转换成字符串输出

    列表转换成字符串输出 例如:我的列表是: a=[1, 0, 0, 0, 0, 0, 0, 0] 然后输出100000 字符之间有无空格: 没有空格: 1 "".join(map(i ...

  2. c++第二周任务一*(1‐1)编写递归函数将十进制数转换成二进制数输出。

    /任务一 /*(1‐1)编写递归函数将十进制数转换成二进制数输出. * 算法说明: */ #include <iostream> using namespace std; void d2b ...

  3. python输出图片到word_python将文本转换成图片输出的方法

    本文实例讲述了python将文本转换成图片输出的方法.分享给大家供大家参考.具体实现方法如下: #-*- coding:utf-8 -*- from PIL import Image,ImageFon ...

  4. c语言输出字符的十六进制,用c语言输入键盘上的字符后转换成十六进制输出

    用c语言输入键盘上的字符后转换成十六进制输出 悬赏分:10 | 提问时间:2010-9-13 10:26 | 提问者:745922085 | 问题为何被关闭 其他回答 共3条 #include #in ...

  5. 二进制转换成十六进制输出的C代码

    (本博客只提供很厉害的方法,没有代码) 项目需求是需要把一个字节(8bit)的二进制数转换成一个十六进制的数值,然后发送给上位机: 我自己试着编写代码,思路是把这个8bit的二进制数存放到一个数组里面 ...

  6. LiveNVR视频流媒体服务器软件可以接收rtmp推流并转换成GB28181输出级联到第三方国标平台服务

    接收rtmp推流并转换成GB28181输出级联到第三方国标平台服务 1.需求背景 2.根据RTMP推流规则推流 2.1.RTMP推流地址配置规则 2.2.配置设备推流 3.配置拉转RTMP 3.1.配 ...

  7. LiveNVR视频流媒体平台支持接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务

    接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务 1.需求背景 2.开启RTSP 2.1.基础配置配置RTSP端口 2.3.RTSP推流地址配置规则 2.2.配置设备推流 3.配置拉 ...

  8. 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式

    VOC目标检测数据集的格式 其中图片存放在JPEGImages文件夹中,标注是xml文件,存储在Annotations文件中 关于train集和val集的txt划分存放在ImageSets文件夹下面的 ...

  9. android开发将h5转换成pdf_如何将PDF转换成图片?搞定PDF格式转换,就用这招就够了!...

    原标题:如何将PDF转换成图片?搞定PDF格式转换,就用这招就够了! 在我们日常学习和日常工作中,我们有时候会遇到要使用到PDF中某一部分的情况,这时候我们可以将PDF文件转成图片.有什么办法可以把P ...

最新文章

  1. buildroot 简要记录
  2. Servlet登陆功能的实现
  3. Docker 常见问题 (FAQ)-2015
  4. Flink 分别读取kafka和mysql作为source
  5. C++中使用TCP传文件
  6. effective C++ 条款 3:尽可能使用const
  7. 计算机网络层实验路由表苏州科技,苏州科技大学计算机网络实验报告课案.docx...
  8. LeetCode 391. 完美矩形(set检查顶点+面积检查)
  9. VMware与宿主机同一网段
  10. vs2017环境下编译log4cpp-1.1.3
  11. 利用WebMatrix安装drupal7 基于IID+SqlExpress
  12. 华为5102路由器虚拟服务器,华为路由WS5102怎么设置wifi中继功能
  13. oracle的oem登录,如何启动Oracle的OEM管理工具?
  14. 2020数学建模国赛A题 炉温曲线 心得
  15. openffice安装(windows和linux)
  16. 7-13 打印金字塔图案
  17. 简单行人重识别代码到88%准确率 郑哲东 ​准备工作
  18. 【转】这是一篇很完整的元器件选型指南
  19. 负数十进制转换二进制
  20. 计算机英语项目教学法,基于项目教学法的计算机英语论文

热门文章

  1. 卖萌屋学术站开放注册啦!寻募种子用户,超多特权放出!
  2. Mock Server实践
  3. 美团酒店直连产品数据一致性演进
  4. 美团大脑:知识图谱的建模方法及其应用
  5. 闲鱼账号被封怎么办?解封看这里!
  6. 图谱实战 | 医学知识图谱的价值与应用场景
  7. 3 计算机组成原理第三章 存储系统 主存简单模型及寻址 半导体寄存器 存储器分类 主存与CPU连接 双口RAM和多模块寄存器
  8. 单链表的按位置插入和删除
  9. SIRIM上海,http://www.sirim-global.com
  10. nodejs中处理回调函数的异常