【目标检测】在图像上画bounding box框,生成带真实标签gt的图片

  • 问题/Motivation
    • 数据格式
    • 用到的库
    • 实际代码`
    • 结果展示

问题/Motivation

在制作完数据集后,想看一下制作的bounding boxes准确度如何,因此这里使用opencv,实现批量在图片上绘制bboxes。

数据格式

主要包括以下两种格式的数据:
a. 以字典形式存储的所有图片的 gt 数据;

b. 图片:名称为052736.png、092462.png等,和 gt 数据一一对应

其实,数据格式不重要,无论是 xml、json文件,或者是这里的列表、csv 等,只要有 gt 数据,就可以通过编程处理。

用到的库

import json
from tkinter.filedialog import Open
import os
import cv2
import matplotlib.pyplot as plt

实际代码`

#本程序用于生成带gt的图片
import json
from tkinter.filedialog import Open
import os
import cv2
import matplotlib.pyplot as plt#包含所有groud truth .json文件
file_name = r'G:/xxx/xxx/gt_public.json'
#with语句自动调用f.close()语句,保证无论是否出错都能正常关闭文件
with open(file_name,'r') as f:all_info=json.load(f)     #从.json文件中读取数据,包括每幅影像的 "id":bbox(二维数组),字典数据类型print(len(all_info))        #共有多少条记录/键值对 img_id=list(all_info.keys()) #返回字典所有的keys,并转化为listdef ch_boxes(labels):  #多个bbox循环变换bboxes=[]for label in labels:x_min = label[0]y_min = label[1]x_max = label[0]+label[2]y_max = label[1]+label[3]label = [x_min, y_min, x_max, y_max] #[xmin,ymin,width,height]bboxes.append(label)return bboxesdef drawLabel(label_img_path, bboxes,img): #定义绘制函数,写入的图片路径,读取的图片,图片上的bboxesfor item in bboxes:a = (item[0], item[1])  # a = (x_min, y_min)#左上角坐标(x1,y1)b = (item[2], item[3])  # b = (x_max, y_max)#右下角坐标(x2,y2)cv2.rectangle(img, a, b, (0, 255, 0), 2) #绘制框cv2.imwrite(label_img_path, img) #写入label_img# cv2.namedWindow(label_img_path, flags=cv2.WINDOW_AUTOSIZE)# cv2.imshow(label_img_path, img)  #画图显示# cv2.waitKey(0)returndata_path = 'xxx/xxx_Dataset/'
images_path = os.path.join(data_path, 'images/')  #记得加反斜杠
label_path = os.path.join(data_path,'label_img/') #新文件夹位置for filename in img_id:pic_path = os.path.join(images_path, filename + '.png') #后缀记得加.!label_img_path = os.path.join(label_path, filename + '.png')  #label_img写入的路径bboxesraw = all_info[filename] #得到该张img对应的1-n个bboxbboxes = ch_boxes(bboxesraw)img = cv2.imread(pic_path) #opencv 读取图片if len(bboxes) == 0:print('该图片无标签数据',filename+'.png')drawLabel(label_img_path,bboxes,img)print('正在处理%s.png'%filename)print('共生成 %s 个labeled_img文件'%len(img_id))

这里的具体路径就不展示了,有需要的同学直接改为自己的路径就可以拿去用了。

结果展示


涉及到项目原因,就不展示具体的数据集了,这里用一张别人博客的结果进行展示。
图片来源:https://blog.csdn.net/qq_15969343/article/details/80604848

以上就是实现绘制带 gt 标签的图片的全部过程了,是不是非常简单好用呢。如果对你有帮助的话,请点个赞把。十分感谢!

【目标检测】在图像上画bounding box框,生成带真实标签gt的图片相关推荐

  1. 【目标检测】grid cell、bounding box、ground truth的含义

    记录几个名词解释,如果有表达不准确或不充分的地方欢迎指正. grid cell 就相当于划分好的网格,比如说YOLOv1是将图片分成7*7的网格,然后这49个网格每个网格就是一个grid cell. ...

  2. 《动手学深度学习》Task09:目标检测基础+图像风格迁移+图像分类案例1

    1 目标检测基础 1.1 目标检测和边界框(9.3) %matplotlib inline from PIL import Imageimport sys sys.path.append('/home ...

  3. 深度学习的目标检测通览(上)

    近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾早期的经典工作,并对较新的趋势做一个全景式的介绍,帮助读者对这一领域建立基本的认识.(营长注:因本文篇幅较长, ...

  4. Yolo:实时目标检测实战(上)

    Yolo:实时目标检测实战(上) YOLO:Real-Time Object Detection 你只看一次(YOLO)是一个最先进的实时物体检测系统.在帕斯卡泰坦X上,它以每秒30帧的速度处理图像, ...

  5. 目标检测的图像特征提取

    转自:http://blog.csdn.net/zouxy09/article/details/7929348 作者:zouxy09 目标检测的图像特征提取之(一)HOG特征 1.HOG特征: 方向梯 ...

  6. 视频目标检测与图像目标检测的区别

    一. 前言 本文介绍了知乎上关于视频目标检测与图像目标检测的区别的几位大佬的回答.主要内容包括有视频目标检测与图像目标检测的区别.视频目标检测的研究进展.研究思路和方法. 作者:Naiyan Wang ...

  7. 在yuv上画线_利用布雷森汉姆算法绘制在YUV图像上画直线

    最近,因工作需要,在YUV图像上画直线: 算法1步骤: 1.已知直线的起点和终点: 2. 利用布雷森汉姆算法在两点间画直线: 3. 将该直线上的点的颜色在YUV图像上画出. 布雷森汉姆算法原理参考wi ...

  8. opencv3_java 在已有的图像上画圆圈 CircleOnImg

    在已有的图像上画圆圈 CircleOnImg package opencv_java_demo;import org.opencv.core.*; import org.opencv.imgcodec ...

  9. matlab 图像上画椭圆 保持原来图像分辨率

    一. 问题 在真实图像上画椭圆后,保存的图像要不有空白边界要不分辨率大小和原图不一样. 二. 解决方法 利用 figure 的 border 属性 Im2=imread('image\egg.jpg' ...

最新文章

  1. Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了!
  2. 新冠图像数据分析论文集合(附链接)
  3. python基本使用-Python 应该怎么去练习和使用?
  4. hive 和 impala 时间参数错误的问题 yyyy-MM-dd
  5. 交换和路由的区别?VLAN的特点?
  6. MySQL 数据库show processlist where条件筛选报错解决方法,[Code: 1064, SQL State: 42000] You have an error in your
  7. 【NOIP2015模拟10.22】最小代价
  8. QButtonGroup
  9. tomcat安装成功页面翻译
  10. go regexp匹配字符串_多模式字符串匹配算法ac自动机(用go语言实现)
  11. 微波网络归一化转移矩阵[a]导出散射矩阵[S]
  12. like mybatis 用法_Mybaits中Like 的使用方式以及一些注意点
  13. 重写ArrayAdapter
  14. 传智播客 C/C++学习笔记 二级指针作为输出参数以及空间的释放
  15. 微信小程序反编译解包教程
  16. HTML5 - WebSQL
  17. 考研英语 - word-list-23
  18. 中国金控盐碱地水稻 国稻种芯-林裕豪:粮食安全两会热点
  19. elasticsearch的查询器query与过滤器filter的区别
  20. PD虚拟机最佳化内存设置,让Windows更加好用

热门文章

  1. 滑动平均模型原理+源码分析
  2. ftp共享文件夹设置说明
  3. vue中解决 mouseenter 和 mouseout 时,鼠标进入子组件造成 mouseout 触发而闪烁的问题
  4. JAVA定时发送邮件接口
  5. cximage库实现图片重叠效果
  6. 高速摄影测量 照相机定标
  7. java补完——计算机日语外来语接续词(未完成)
  8. Systick寄存器
  9. Azkaban简介与使用
  10. redis有序集合sorted set(zset)数据类型相关命令介绍及使用