先看我们代码的效果:

原始图片:

加载坐标信息后的图片:


我的文件结构是这样的:

这是我用于处理的代码:

import os
import cv2 as cv
import xml.etree.ElementTree as ETdef xml_to_jpg(imgs_path, xmls_path, out_path):imgs_list = os.listdir(imgs_path)  #读取图片列表xmls_list = os.listdir(xmls_path)  # 读取xml列表if len(imgs_list) <= len(xmls_list):  #若图片个数小于或等于xml个数,从图片里面找与xml匹配的print("标记点1")for imgName in imgs_list:temp1 = imgName.split('.')[0]   #图片名 例如123.jpg 分割之后 temp1 = 123temp1_ = imgName.split('.')[1]  #图片后缀if temp1_!='jpg' and temp1_ !='jpeg':continuefor xmlName in xmls_list:       #遍历xml列表temp2 = xmlName.split('.')[0]  #xml名temp2_ = xmlName.split('.')[1]if temp2_ != 'xml':continueif temp2!=temp1:       #判断图片名与xml名是否相同continueelse:              #不同的话 开始读取xml坐标信息img_path = os.path.join(imgs_path, imgName)xml_path = os.path.join(xmls_path, xmlName)img = cv.imread(img_path)labelled = imgroot = ET.parse(xml_path).getroot()for obj in root.iter('object'):bbox = obj.find('bndbox')xmin = int(bbox.find('xmin').text.strip())ymin = int(bbox.find('ymin').text.strip())xmax = int(bbox.find('xmax').text.strip())ymax = int(bbox.find('ymax').text.strip())labelled = cv.rectangle(labelled, (xmin, ymin), (xmax, ymax), (0, 0, 255), 2)cv.imwrite(out_path + '\\' +imgName, labelled)breakelse:  # 若xml个数小于图片个数,从xml里面找与图片匹配的。下面操作与上面差不多print("标记点2")for xmlName in xmls_list:temp1 = xmlName.split('.')[0]temp1_ = xmlName.split('.')[1]if temp1_ != 'xml':continuefor imgName in imgs_list:temp2 = imgName.split('.')[0]temp2_ = imgName.split('.')[1]  # 图片后缀if temp2_ != 'png':continueif temp2 != temp1:continueelse:img_path = os.path.join(imgs_path, imgName)xml_path = os.path.join(xmls_path, xmlName)img = cv.imread(img_path)labelled = imgroot = ET.parse(xml_path).getroot()for obj in root.iter('object'):bbox = obj.find('bndbox')xmin = int(bbox.find('xmin').text.strip())ymin = int(bbox.find('ymin').text.strip())xmax = int(bbox.find('xmax').text.strip())ymax = int(bbox.find('ymax').text.strip())labelled = cv.rectangle(labelled, (xmin, ymin), (xmax, ymax), (0, 0, 255), 1)print(out_path + imgName)cv.imwrite(out_path + imgName, labelled)break
if __name__ == '__main__':imgs_path = r'./A/'  #图片路径xmls_path = r'./B_xml/' #xml路径retangele_img_path = './pic_out/' #保存画框的路径xml_to_jpg(imgs_path, xmls_path, retangele_img_path)

目标检测 - 如何在图片中标记Annotations中的坐标信息?相关推荐

  1. 深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》

    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4<Optimal Speed and Accuracy of Object Detection> Abstract 摘要 1. In ...

  2. 深度学习论文阅读目标检测篇(五)中英对照版:YOLOv2《 YOLO9000: Better, Faster, Stronger》

    深度学习论文阅读目标检测篇(五)中文版:YOLOv2< YOLO9000: Better, Faster, Stronger> Abstract 摘要 1. Introduction 1. ...

  3. 红外小目标:基于深度学习的红外小目标检测研究方法(持续更新中)

    深度学习红外小目标研究现状_2021.7.6更新 2019年 TBC-Net(TBC-Net: A real-time detector for infrared small target detec ...

  4. 旋转目标检测综述(持续更新中)

    文章目录 前言(所有检测模型) 四.R^2CNN(17年) 1.表示方法 2.亮点一:增加anchor 3.亮点二:增加多尺度的ROIPooling.斜框FC 4.亮点三:斜NMS 5.损失函数.实验 ...

  5. 目标检测之Loss:FasterRCNN中的SmoothL1Loss

    多任务损失(来自Fast R-CNN)  multi-task数据结构 Fast R-CNN网络有两个同级输出层(cls score和bbox_prdict层),都是全连接层,称为multi-task ...

  6. 【深度学习】什么是目标检测中的平均精度均值(mAP)?

    计算机视觉界已经集中在度量 mAP 上,来比较目标检测系统的性能.在这篇文章中,我们将深入了解平均精度均值 (mAP) 是如何计算的,以及为什么 mAP 已成为目标检测的首选指标. 目标检测的快速概述 ...

  7. 2021综述:一般目标检测中的遮挡处理

    目录 综述:通用对象检测中的遮挡处理 1.简介 2.目标检测的应用 3.数据集 4.户外场景的遮挡处理 A.数据收集 B.遮挡检测 C.生成遮挡区域 D.遮挡目标检测 5.室内场景中的遮挡处理 A.场 ...

  8. 什么是目标检测中的平均精度均值(mAP)?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 计算机视觉界已经集中在度量 mAP 上,来比较目标检测系统的性能. ...

  9. 深度神经网络在基于视觉的目标检测中的应用

    简 介: 目标检测是计算机视觉的一个重要应用方向,深度神经网络的提出极大地帮助基于视觉的目标检测提高了准确度.自2014年以来,深度神经网络在基于视觉的目标检测中被广泛应用,出现了多种算法.本文分别讨 ...

最新文章

  1. Python RPi GPIO编程控制
  2. 一步一步写算法(之prim算法 中)
  3. 性能测试知多少---并发用户
  4. 2018年国内就业薪资高的7大编程语言排行
  5. C# 学习笔记(12)hex文件转bin文件小工具
  6. 生成建表脚本up_CreateTable
  7. TopFreeTheme精选免费模板【20130701.特别版】
  8. 这可能是最全面的 python 字符串拼接总结!多种方法选最优
  9. MongoDB 计划从“Data Sprawl”中逃脱
  10. html引用本地图片不能是桌面的,Img标签与本地文件:/// URL不显示在Microsoft Edge Web浏览器...
  11. python利用thinker制作多页面切换的桌面应用实例教程
  12. webpack Plugin常用 optimization splitChunks UglifyJsPlugin sourceMap
  13. 计算机能帮助我学英语翻译,英语翻译以下几个句子,帮忙把汉语翻译成英语,请不要用软件翻!1、计算机能帮助人们从事复杂的计算.几十年前可能需要数月完成...
  14. 从网络上下载文件到本地
  15. 关于循环经济的三维展示
  16. 【转(比较全面)】CSS3弹性盒模型之Flexbox是布局模块box-sizing box-orient box-direction box-ordinal-group
  17. Linux自学之旅-安装篇(一)
  18. jmeter 中 Client implementation HttpClient4和java区别实践一
  19. 分布式存储学习入门(一)
  20. 收集利用 Kotlin 进行 Android 开发的开源库,扩展,工具,开源项目,资料等高质量资源

热门文章

  1. LCD显示原理和驱动方式介绍
  2. Win10下VisualStudio2019安装和Helloworld测试
  3. mysql不同服务器数据库查询_不同服务器不同数据库两张表连接查询使用经验
  4. 下次激活策略10_巅峰武侠卡牌巨制手游乱世江湖1元商城特权bt版今日10:00上线_乱世江湖...
  5. 双屏鼠标经常跑到副屏_1+1gt;2,让ipad变成你的电脑副屏
  6. c语言第1章ppt,c语言第1章课件.ppt
  7. html抽取正文内容 c++,如何用C/C++获取html或shtml文件的内容?
  8. php缩图代码是什么,php生成缩略图示例代码分享(使用gd库实现)
  9. java监听变量的变化_[Java学习小记]使用PropertyChangeSupport来监听变量的变化
  10. pycharm 中写代码的提示的前符号 p,m ,c,v, f 是什么意思