labelimg标注数据处理以及画散点图(python)
第一步 labelimg标注数据进行处理
数据来自于实验室的布匹瑕疵检测项目,其中这里是标签的信息,每个txt是对一个图片瑕疵的标注,一个txt的一行是:瑕疵种类编号 bbox中心点横坐标 bbox中心点纵坐标 bbox宽 bbox高,我们需要最终用长宽比以及面积制作一个散点图。
@1 将多个TXT文本组合成一个
代码如下
# coding=utf-8
import os
import os.path # 文件夹遍历函数
# 获取目标文件夹的路径
filedir = 'F:\\cpanzhuomian\\label'
# 获取当前文件夹中的文件名称列表
filenames = os.listdir(filedir)
# 打开当前目录下的result.txt文件,如果没有则创建
f = open('result.txt', 'w')
# 先遍历文件名
for filename in filenames:
filepath = filedir + '/' + filename
# 遍历单个文件,读取行数
for line in open(filepath):
f.writelines(line)
f.write('\n')
# 关闭文件
f.close()
结果多个TXT文本合并为一个TXT文本
@2 将TXT文本中空格转换成逗号并保存为csv格式
ls = open("D:\\sandiantu\\new.txt").readlines()
newTxt = ""
for line in ls:
newTxt = newTxt + ",".join(line.split()) + "\n"
print(newTxt)
fo = open("D:\\sandiantu\\new11.csv", "w")
fo.write(newTxt)
fo.close()
最后结果
保存为csv格式后用Excel函数将数据进行增删改成最终想要的x轴数据y轴数据,这一步相信很多人都会,略过
第二步 用csv数据画出散点图
代码如下
import pandas as pd
import matplotlib.pyplot as plt
hw=pd.read_csv('new11.csv')#导入csv文件
plt.scatter(hw['height/weight'], hw['squar'],s=2)#s指的是点的面积
plt.xlabel(u"squar")
plt.ylabel(u"height/weight")
#画出散点图
plt.show()
#将散点图显示出来
最终效果
最终的小小说明
在这个过程中,你可能需要将TXT中多余进行删除
代码如下
"""
读取存在空行的文件,删除其中的空行,并将其保存到新的文件中
"""
with open('D:\\sandiantu\\result.txt','r',encoding = 'utf-8') as fr,open('new.txt','w',encoding = 'utf-8') as fd:
for text in fr.readlines():
if text.split():
fd.write(text)
print('输出成功....')
That’s all ,感谢观看