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

一.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()

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

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

相关文章

一文看尽2018全年AI技术大突破

来源&#xff1a;量子位摘要&#xff1a;2018&#xff0c;仍是AI领域激动人心的一年。这一年成为NLP研究的分水岭&#xff0c;各种突破接连不断&#xff1b;CV领域同样精彩纷呈&#xff0c;与四年前相比GAN生成的假脸逼真到让人不敢相信&#xff1b;新工具、新框架的出现&#…

pyecharts地图使用

1.首先安装包 pip install pyecharts0.5.1 2.安装地图包 依次是全球地图、中国省级地图、中国市级地图、中国区县级地图、中国区域地图 pip install echarts-countries-pypkg pip install echarts-china-provinces-pypkg pip install echarts-china-cities-pypkg …

《科学》:基因编辑婴儿入选年度“科学崩坏”事件

来源&#xff1a;知识分子摘要&#xff1a;《科学》杂志每年会评出在即将过去的一年里最为重要的十大科学突破&#xff08;Science Breakthrough&#xff09;。今年&#xff0c;夺得年度突破桂冠的是“单细胞水平细胞谱系追踪技术”&#xff0c;帮助破获多起悬案的法医系谱技术…

利用scipy包计算表格线的峰值,还原表格得到表格结构

1. 利用scipy包计算表格线的峰值 import cv2 import numpy as np from scipy.signal import find_peaks, peak_widthsdef get_lines_from_image(img_bin, axis, kernel_len_div 20, kernel_len None, iters 3):""":param img_bin: opencv img:param axis: 0…

原子智库 | 刘伟:人工智能快追上人类思维?答案可能让你失望

来源&#xff1a;原子智库摘要&#xff1a;2018年12月15日&#xff0c;原子智库主办的“改革的规则与创新——2018光华腾讯经济年会暨风云演讲”在北京大学举办北京邮电大学人机交互与认知工程实验室主任刘伟发表演讲。演讲的话题是未来工业化发展、智能化发展。刘伟在演讲中指…

利用xlwt写excel并进行单元格的合并

1.写入行列值 import xlwt # 创建一个workbook 设置编码 workbook xlwt.Workbook(encodingutf-8) # 创建一个worksheet worksheet workbook.add_sheet(My Worksheet)# 写入excel # 参数对应 行, 列, 值 worksheet.write(1, 0, label this is test)# 保存 workbook.save(Exc…

为了边缘计算,亚马逊、谷歌、微软已正面交锋!

来源&#xff1a;全球物联网观察摘要&#xff1a;so&#xff0c;你真的了解边缘计算吗&#xff1f;边缘计算的前世今生云计算自2005年提出之后&#xff0c;就开始逐步地改变我们的生活、学习、工作的方式。云计算使得公司能够在自己的物理硬件之外&#xff0c;通过远程服务器网…

每日一小练——二项式系数加法解

上得厅堂&#xff0c;下得厨房&#xff0c;写得代码&#xff0c;翻得围墙&#xff0c;欢迎来到睿不可挡的每日一小练&#xff01; 题目&#xff1a;二项式系数加法解 内容&#xff1a;请编写一个程序&#xff0c;仅仅用加法&#xff0c;求出n中取r个组合系数C(n,r)&#xff0c;…

华为、苹果、高通,谁在领跑?全面解读清华AI芯片报告

来源&#xff1a;智东西摘要&#xff1a;本文全面讲解人工智能芯片&#xff0c;系统梳理人工智能芯片的发展现状及趋势。2010 年以来&#xff0c;由于大数据产业的发展&#xff0c;数据量呈现爆炸性增长态势&#xff0c;而传统的计算架构又无法支撑深度学习的大规模并行计算需求…

SSD300网络结构(pytorch)+多尺度训练与测试

一.SSD300 1.如图是预测框的相应feature map 这里smin是0.2&#xff0c;表示最底层的scale是0.2&#xff1b;smax是0.9&#xff0c;表示最高层的scale是0.9,m代表产生尺度预测的feature map个数。 其中anchor的长宽关系&#xff0c;s就是上图中的scale,a就是上图中的anchor …

01-08-02【Nhibernate (版本3.3.1.4000) 出入江湖】二级缓存:NHibernate自带的HashtableProvider...

第一步骤&#xff1a;hibernate.cfg.xml文件补上如下配置&#xff1a; <?xml version"1.0" encoding"utf-8"?> <!-- This template was written to work with NHibernate.Test. Copy the template to your NHibernate.Test project folder and…

2018, 自动驾驶异常艰难的一年

编译&#xff1a;张玺 &#xff0c;编辑&#xff1a;宇多田摘要&#xff1a;虽然文章几乎聚焦于美国硅谷的技术公司&#xff0c;但这并不意味着作者提出的种种问题不存在于中国的技术公司身上。有意思的是&#xff0c;作者批评了各大公司此前疯狂立 flag&#xff0c;却最后纷纷…

目标检测矩形框与polygon数据增加--裁剪,拓展,旋转

1.裁剪 import torch from torchvision import transforms import cv2 import numpy as np import types from numpy import random class RandomSampleCrop(object):"""CropArguments:img (Image): the image being input during trainingboxes (Tensor): th…

医生们说,AI不会取代我们!

来源&#xff1a;IEEE电气电子工程师学会每次人工智能在医疗任务中与医生进行竞争&#xff08;对此我们已经报道过很多次&#xff09;时&#xff0c;一个问题不可避免地浮出水面&#xff1a;人工智能会取代医生吗&#xff1f;如果你与AI 专家或硅谷投资者交谈&#xff0c;答案往…

ubuntu安装python3.5+pycharm+anaconda+opencv+docker+nvidia-docker+tensorflow+pytorch+Cmake3.8

一&#xff0c;切换python版本为3.5 装好ubuntu&#xff0c;python版本是2.7的 我自己安装并更改打开为python3.5 sudo apt-get install python3.5 设置优先级和默认环境&#xff1a; sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 su…

学界 | 量化深度强化学习算法的泛化能力

来源&#xff1a;AI 科技评论OpenAI 近期发布了一个新的训练环境 CoinRun&#xff0c;它提供了一个度量智能体将其学习经验活学活用到新情况的能力指标&#xff0c;而且还可以解决一项长期存在于强化学习中的疑难问题——即使是广受赞誉的强化算法在训练过程中也总是没有运用监…

《科学》评出2018年度十大科学突破事件

来源&#xff1a;科学大院《科学》杂志每年会评出在即将过去的一年里最为重要的十大科学突破&#xff08;Science Breakthrough&#xff09;。今年&#xff0c;夺得年度突破桂冠的是“单细胞水平细胞谱系追踪技术”&#xff0c;帮助破获多起悬案的法医系谱技术、#MeToo 运动等也…

递归理解以及时间复杂度计算

一.复杂度分析&#xff1a; 可以理解为递归的深度就是空间复杂度&#xff0c;时间复杂度就是O(T*depth),其中&#xff34;是每个递归函数的时间复杂度&#xff0c;depth是递归深度&#xff0e; #空间复杂度O(1) def sum1_(n):res 0for i in range(n1):resireturn res#递归 空…

性价比高出英特尔45%,亚马逊的云服务器芯片如何做到?| 解读

来源&#xff1a;TheNextPlatform编译&#xff1a;机器之能 张玺摘要&#xff1a;到目前为止&#xff0c;亚马逊和其他大型云运营商几乎全部使用英特尔的 Xeon 芯片。虽然在服务器芯片市场&#xff0c;英特尔市场占有率非常高&#xff0c;但亚马逊正使用折扣策略来赢得客户。亚…

GIOU loss+DIOU loss+CIOU loss

一.IOU 1.GIOU解决没有交集的框,IOU为0,其损失函数导数为0,无法优化的问题。 图1 GIOU,IOU,l2范数差异 a)可看出 l2值一样,IOU值是不一样的,说明L1,L2这些Loss用于回归任务时&#xff0c;不能等价于最后用于评测检测的IoU. b)可看出当框有包含关系,GIOU就退化为IOU 其是找…