精华内容
下载资源
问答
  • python批量修改LabelImg标注生成的xml文件中的物体目标名称
    千次阅读
    2020-07-31 19:36:40

    在数据集标注中,将检测物体命名为a,标注完后觉得a不合适,又想将标签文件中的目标a改成b,使用python解析XML文件后批量修改。

    # coding: utf-8
    '''
    通过解析xml文件,批量修改xml文件里的标签名称,比如把标签zero改成num
    '''
    import os.path
    import glob
    import xml.etree.ElementTree as ET
    #import xml.dom.minidom
    
    
    path = r'D:/picture/指针仪表拍图/表盘标签/Annotations/'
    for xml_file in glob.glob(path + '/*.xml'):
        # 返回解析树
        tree = ET.parse(xml_file)
        # 获取根节点
        root = tree.getroot()
        #print(root)
        # 根据标签名查找root下的所有标签,并获取其值
        # print(imgname)
        # 对所有目标进行解析
     #   dom = xml.dom.minidom.parse(os.path.join(path, xml_file))
        for member in root.findall('object'):
            objectname = member.find('name').text
            if objectname != 'hello':
                print(objectname)
                member.find('name').text = str('meter')
                #objectname = 'num'
                #with open(xml_file, 'w') as fh:
                tree.write(xml_file)
                #os.path.join(path, xml_file)
    
    
    更多相关内容
  • LabelImg标注工具

    2018-09-22 10:08:16
    图片识别的深度学习标注利器,可以生成pascal yolo两种格式
  • 比如将标注B改为bac import os import glob from xml.etree.ElementTree import parse, Element seq_dir = os.path.expanduser('./')#xml文件所在位置 img_files=glob.glob(seq_dir + '*.xml') for file in files...

    比如将标注B改为bac
    在这里插入图片描述
    在这里插入图片描述

    import os
    import glob
    from xml.etree.ElementTree import parse, Element
    seq_dir = os.path.expanduser('./')#xml文件所在位置
    img_files=glob.glob(seq_dir + '*.xml') 
    for  file in files:
        dom = parse(img_file)  
        root = dom.getroot()
        # print(root)
        for obj in root.iter('object'):#name节点
            name = obj.find('name').text
            if name == 'B':
                name = 'bac'
            if name == 'C':
                name = 'cas'
            if name == 'A':
                name = 'pro'            
            obj.find('name').text = name #修改
            # print(name1)
        dom.write(img_file, xml_declaration=True)#将修改后的保存
    
    
    
    展开全文
  • content = response.read() data = json.loads(content.decode('utf-8')) return data else: return None #批量增加样本 #dataset_id:easydl数据集id #path:lableImg的数据目录 #max:max大于0且长或宽...

    在这里插入代码片1.可以参考百度al社区的这个帖子https://ai.baidu.com/forum/topic/show/942310
    2。不过他说的太笼统了,我进行一下补充:
    client_id、client_secret是EasyDL定制训练平台 - 应用列表创建apl的API Key,Secret Key
    在这里插入图片描述
    test.py中的labelImg数据目录只能是英文和数字,不能有汉字和其他符号,里面的数据是图片和xml放一起。
    而且他的工程有点小问题,我是师兄帮忙调试的。把里面的easydl模块参考我的换一下就行了,稍微修改后easydl模块代码

    #coding=utf-8
    #baidu ai easydl toolkit by kooky126
    import urllib.request
    import configparser
    import os
    import json
    import re
    import time
    import base64
    import cv2
    import glob
    from xml.etree import ElementTree as ET
    
    #初始化token
    def inittoken():
    	cf = configparser.ConfigParser()
    	a = cf.read("easydl.conf")
    	client_id = cf.get("token","client_id")
    	client_secret = cf.get("token","client_secret")
    	host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id='+client_id+'&client_secret='+client_secret
    	request = urllib.request.Request(host)
    	request.add_header('Content-Type', 'application/json; charset=UTF-8')
    	response = urllib.request.urlopen(request)
    	content = response.read()
    	if (content):
    		date = json.loads(content.decode('utf-8'))
    		if date['access_token']:
    			with open("token.json","w") as f:
    				json.dump(date,f)
    			return date['access_token']
    		else:
    			return None
    	else:
    		return None
    
    #取token
    def gettoken():
    	if os.path.exists('token.json'):
    		with open('token.json') as f:
    			data = json.load(f)
    			expires = int(re.findall(r"\d{10}",data['access_token'])[0])
    			if expires>int(time.time()):
    				return data['access_token']
    			else:
    				return inittoken()
    	else:
    		return inittoken()
    
    #缩小图像,长宽不超过max
    def resize(img,max):
    	heigth,width,_ = img.shape
    	scale = 1.0
    	if heigth>max or width>max:
    		if heigth>width:
    			nh = max
    			scale = max/heigth
    			nw = int(width*scale)
    		else:
    			nw = max
    			scale = max/width
    			nh = int(heigth*scale)
    		return  cv2.resize(img, (nw,nh), interpolation=cv2.INTER_CUBIC),scale
    	else:
    		return img,scale
    
    #增加单个样本
    #dataset_id:easydl数据集id
    #imgfile:图片文件路径
    #xmlfile:标记xml文件路径
    #name文件名:导入后平台显示的图片文件名,不要带jpg后缀
    #max:max大于0且长或宽超过max时,会缩放图片,max为0时不缩放,保留原图
    #append:easydl api里的参数,通常False就行
    def addentity(dataset_id,dir,xmlfile,name,max=0,append=False):
    	request_url = "https://aip.baidubce.com/rpc/2.0/easydl/dataset/addentity"
    	access_token = gettoken()
    	imgfile=os.path.join(dir,name+".jpg")
    	if not access_token is None:
    		request_url = request_url + "?access_token=" + access_token
    		scale = 1
    		image = cv2.imread(imgfile)
    		if max>0:
    			image,scale = resize(image,max)
    		h, w =image.shape[:2]
    		_,buffer = cv2.imencode('.jpg', image)
    		jpg64 = base64.b64encode(buffer)
    		jpg_as_text = jpg64.decode("utf-8")
    		req = {}
    		req['entity_content']=jpg_as_text
    		req['type'] = "OBJECT_DETECTION"
    		req['dataset_id'] = dataset_id
    		req['appendLabel'] = append
    		req['entity_name'] = name+".jpg"
    		tree = ET.parse(xmlfile)
    		root = tree.getroot()
    		objects = root.findall("object")
    		subobjs = []
    		for object in objects:
    			name = object.find("name").text
    			xmin = int(int(object.find("bndbox").find("xmin").text)*scale)
    			ymin = int(int(object.find("bndbox").find("ymin").text)*scale)
    			xmax = int(int(object.find("bndbox").find("xmax").text)*scale)
    			ymax = int(int(object.find("bndbox").find("ymax").text)*scale)
    			subobject = {}
    			subobject['label_name'] = name
    			subobject['left'] = xmin
    			subobject['top'] = ymin
    			subobject['width'] = int(xmax-xmin)
    			subobject['height'] = int(ymax-ymin)
    			subobjs.append(subobject)
    		req['labels']=subobjs
    		params = bytes(json.dumps(req),"utf8")
    		request = urllib.request.Request(url=request_url, data=params)
    		request.add_header('Content-Type', 'application/json')
    		response = urllib.request.urlopen(request)
    		content = response.read()
    		data = json.loads(content.decode('utf-8'))
    		return data
    	else:
    		return None
    
    #批量增加样本
    #dataset_id:easydl数据集id
    #path:lableImg的数据目录
    #max:max大于0且长或宽超过max时,会缩放图片,max为0时不缩放,保留原图
    #append:easydl api里的参数,通常False就行
    def addentitybatch(dataset_id,path,max=0,append=False):
    	if os.path.exists(path):
    		xmlfiles = glob.glob(os.path.join(path,"*.xml"))
    		print(xmlfiles)
    		for xmlfile in xmlfiles:
    			dir,xmlfilename = os.path.split(xmlfile)
    			name,_=os.path.splitext(xmlfilename)
    			imgfile = xmlfile.replace("xml","jpg")
    			res = addentity(dataset_id,dir,xmlfile,name,max,append)
    			if not res is None:
    				if "error_msg" in res:
    					print("ERROR",res['error_msg'],xmlfile)
    				else:
    					print("OK",xmlfile)
    
    
    展开全文
  • labelImg标注图像的详细教程

    千次阅读 热门讨论 2020-07-07 17:32:10
    labelImg标注图像的详细教程 一、 labelImg工具下载: 下载地址:https://pan.baidu.com/s/1hdT6bwttdH_Q-1X8SPr8nw 提取码: 5nxa。下载文件如图1-1. 图1-1 下载的labelImg.exe是编译好的可执行文件,因此直接将...

    labelImg标注图像的详细教程

    一、 labelImg工具下载:

    下载地址:https://pan.baidu.com/s/1hdT6bwttdH_Q-1X8SPr8nw 提取码: 5nxa。下载文件如图1-1.
    需要下载的labelImg.exe
    图1-1

    下载的labelImg.exe是编译好的可执行文件,因此直接将文件放在windows环境下,如图1-2,双击便可执行使用。
    在这里插入图片描述
    图1-2

    二、 labelImg工具使用方法:

    1. 双击labelImg.exe图标如图1-2,会出现如图1-3所示的背景黑色的窗口是终端界面(无需理会)和操作界面:
      在这里插入图片描述
      图1-3

    在labelImg窗口的左边,有一些操作的功能如表1-1所示:
    在这里插入图片描述

    为了方便操作功能的使用,表1-2罗列了一些快捷键。
    在这里插入图片描述

    三、 开始图像数据标注:

    一般操作的顺序如图1-4:
    在这里插入图片描述
    在这里插入图片描述

    1、 如图1-5,首先点击按钮“Open Dir”打开你要进行标注图像的文件夹,在右下角的“File List”会罗列出该文件夹中的所有图像文件,如果想要只打开一张图像,则点击“Open”按钮即可。然后点击“Change Save Dir”按钮选择标注生成的.xml文件保存路径。
    图1-5
    2、 使用快捷键“W”或者点击“Create Rectbox”按钮,然后画框选取要标注的对象,尽量图像减小尺寸,框画好后会自动弹出“类别填写框”填写类别如图1-6所示;点击“OK”按钮后会显示你所填写的类别,如图1-7所示。如果想修改该类别,则可以选中该对象类别点击右键,选择修改或者删除。
    图1-6
    图1-7
    3、 图像中所有需要被标注的对象均标注完之后,点击“Save”按钮,进行保存。最后在保存文件的路径下生成.xml文件,如图1-8所示,.xml文件的名称是和标注照片的名字一样,如果要修改已经标注过的图像,.xml中的信息会自动改变。
    图1-8
    4、 可点击点击“Next Image”或者“pre image”按钮切换图像,重复上述2、3步骤进行标注。

    展开全文
  • windows下使用labelImg标注图像

    万次阅读 多人点赞 2018-12-29 17:04:53
    工作中遇到一个更好用的标注软件,速度快,操作方便,分享一下: https://blog.csdn.net/python_pycharm/article/details/102685591 用于深度网络训练的数据集做标注的方法和工具有好多,像Labelme、labelImg、...
  • 如何使用labelImg标注图像产生yolov5数据集
  • labelImg标注的 xml格式数据如下: 单个xml文件数据打开如下: python实现labelImg标注的 xml格式数据转换成 txt格式数据的代码xml2txt.py如下: # -*- coding: utf-8 -*- import os import xml.etree.ElementTree...
  • Yolo标注工具-labelImg的详细使用

    千次阅读 多人点赞 2020-06-19 12:55:00
    下载数据标记工具labellmg,github地址:https://github.com/tzutalin/labelImg 2.2 依赖安装 下载完成后,安装依赖PyQt5,lxml,其中 -i http://pypi.douban.com/simple --trusted-host pypi.douban.co
  • C:\Users\Administrator\Desktop\labellmg\图片标注\待标注图片\01017.jpg 需要修改后的路径地址为: 01017.jpg E:/keras-yolo3-master/VOCdevkit/VOC2007/JPEGImages/PartA_01017.jpg 下面给出了代码实现: 以...
  • 批量修改 labelImg 生成的xml文件

    千次阅读 2019-01-22 19:45:25
    使用tensorflow对目标检测图像进行数据训练时,需要标注大量的图像。这个工作量实在是不少。为了更加简便的标注图像,或者说增加训练集: 做如下操作: 先对每类图像各标注100-200张进行训练。 训练准确度提升完成...
  • roLabelImg复制标注
  • LabelImg标注工具的快捷键

    万次阅读 多人点赞 2018-05-17 16:29:43
    Ctrl + s | 保存 | +------------+--------------------------------------------+ | Ctrl + d | Copy the current label and rect box | +------------+-----------...
  • (下) Seaborn:一行代码生成酷炫狂拽的数据集可视化 50题matplotlib从入门到精通 30例 | 一文搞懂python日期时间处理 如何批量下载上海证券交易所上市公司年报 pdfkit | 自动化利器,生成PDF就靠它了 中文文本数据...
  • 实现LabelImg标注的xml文件和文件夹下的图片匹配,把标注的图片复制到另一个文件夹 # coding: utf-8 from PIL import Image import os import os.path import numpy as np import cv2 import glob import pandas as ...
  • 点击labelImg界面的open dir选择创建的文件夹data_picture,就可以导入需要标注的图片,图片列表显示在标注界面的右下角,如下图所示:   点击界面左下角,选中create\nRectBox就可以在图片上进行标注标注好的...
  • 待解决问题对于某个文件夹下的所有图片,使用labelimg进行标注,获得voc类型的xml格式的标签。由于在进行标注工作时,将不同的类别分开标注了,得到标签文件夹有两个,第一个文件夹存储了类别 a 和类别 b 的 labels ...
  • 写在前面的话: ...自从Facebook开源了Detectron目标检测框架后,很多原先用VOC格式数据集(指标注文件)训练目标检测模型的人需要将VOC格式的xml标注文件转换成COCO格式的json标注文件,但Detect...
  • LabelImg如何使用?快捷键操作

    千次阅读 2021-05-18 16:07:21
    图片标注被保存为PASCAL VOC格式的XML文件,这是ImageNet使用的格式。此外,它还支持YOLO和CreateML格式。 怎么安装LabelImg我就不说了,网上教程很多,而且不同的操作系统下,安装方式也存在差异,我是在ubuntu系统...
  • LabelImg的使用

    千次阅读 2020-02-21 14:36:23
    Open Dir:打开图片所在的文件夹,批量导入图片。 Change Save Dir:保存xml文件到指定的路径。 Verify Image:可更改xml文件的内容。 Save可保存xml文件。 快捷键 Ctrl + u 等同于Open dir的功能 Ctrl + r ...
  • 如何安装labelimg

    2021-06-22 05:46:52
    open:打开需要标注的单张图片 open dir:打开需要标注的图片文件夹(批量标注) change save dir:选择保存标注信息的位置 create rectbox :开始画框 画好框之后出现这个: 这里面写入标注类别就可以了,比如你标注...
  • 目录 一、 绪论 1 ...3.2训练样本的制作及标注 6 3.3Mask R-CNN 训练过程 8 3.3.1部分训练参数设置 8 3.3.2训练过程 9 3.4Mask R-CNN 训练结果分析 9 3.4.1检测及分割过程 9 四、 绝缘子自爆区域识别与定
  • LZY的CQU水下机器人视觉学习笔记(一)图像增强-打标-识别图像增强-去雾打标安装并打开labellmglabellmg的基本使用labellmg的常用快捷键YOLOv3按照voc数据建立文件夹合理的创建标题,有助于目录的生成如何改变文本的...
  • 上面对于图片的处理告一段落,接下来对图片进行标注,使用的是labellmg,地址在这里https://github.com/tzutalin/labelImg#macos 我用的是mac,因此用的mac底下的那些命令进行安装 环境:python3.7 Qt5 brew install...
  • 本项目基于PaddleX的YOLOv3进行废水水质判断, 二、数据集简介 本项目从网页上收集了40个水质样品图片,然后使用labelImg对图片进行标注。labelImg的安装及使用请参见...
  • 图像标注工具 这里主要推荐两款图像标注工具 MakeSense 和 labellmg MakeSense: MakeSense是网页端的图像标注工具:Make Sense 上手难度极低 具体使用可以参考这篇博文: (44条消息) make-sense | 图像标注工具_To_...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

labellmg批量标注