众所周知,目标检测的数据集由两部分组成,一部分是图片,另一部分当然就是图片对应的标签了。这里的标签就是图片中每一个物体的边框了。在数据集中,每一个框框是以五个数字组成的,分别是x、y、w、h,以及类别。

  打开数据集,我不太喜欢这些数字,我想要在图片上面框框这些框框,下面直接上代码。

import random
import colorsys
import matplotlib.pyplot as plt
from datetime import datetime
import os
import cv2
import numpy as np
import tensorflow as tf
import shutil#原图像需要放在相应路径下
#生成带框图像路径
out_image_path = '填入你的路径'
#训练集txt文件路径
data_path = '填入你的路径'
#类别名称txt文件路径
class_name_path = '填入你的路径'def draw_bbox_new(image, bboxes, classes=None, show_label=True):if classes is None:classes = read_class_names(class_name_path)class_num = len(classes)image_h, image_w, _ = image.shapehsv_tuples = [(1.0 * x / class_num, 1., 1.) for x in range(class_num)]colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))colors = list(map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), colors))random.seed(32)random.shuffle(colors)random.seed(None)for i, bbox in enumerate(bboxes):coor = np.array(bbox[:4], dtype=np.int32)class_ind = int(bbox[4])bbox_color = colors[class_ind]bbox_thick = 3c1 = (coor[0], coor[1])c2 = (coor[2], coor[3])cv2.rectangle(image, c1, c2, bbox_color, bbox_thick)if show_label:bbox_mess = '%s: %.2f' % (classes[class_ind], 1)t_size = cv2.getTextSize(bbox_mess, 0, 0.5, thickness=1 )[0]cv2.rectangle(image, c1, (c1[0] + t_size[0], c1[1] - t_size[1] - 3), bbox_color, -1)  # filledcv2.putText(image, bbox_mess, (c1[0], c1[1] - 2), cv2.FONT_HERSHEY_SIMPLEX,0.5, (0, 0, 0), 1, lineType=cv2.LINE_AA)return imagedef read_class_names(class_file_name):names = {}with open(class_file_name, 'r') as data:for name in data:names[ID] = name.strip('\n')return namesimage_list = []
with open(data_path)as file:pictures = file.readlines()for i in pictures:image = i.strip().split()image_list.append(image[0])gt_list = []
with open(data_path)as file:pictures = file.readlines()for i in pictures:gt_list.append(i.strip().split()[1:])gt = []
for i in gt_list:tem = []for j in i:tem.append(j.split(','))gt.append(tem)for index,image_path in enumerate(image_list):image_info = cv2.imread(image_path)new_image = draw_bbox_new(image_info, gt[index])new_image = cv2.cvtColor(new_image, cv2.COLOR_BGR2RGB)plt.imshow(new_image)plt.show()
#     img_name = image_path.split('/')[-1]
#     cv2.imwrite(os.path.join(out_image_path,img_name), new_image)

生成图片如下:

代码实现把目标检测数据集的框框画在相应图片上相关推荐

  1. 目标检测:XML文件矩形框在图片上的简单可视化

    代码如下: 需要改的就是开头的四行 可视化结果只有框,没有类别 用于验证 自己写的,亲测可用 import xml.etree.ElementTree as ET import os import c ...

  2. 目标检测---以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集(正确方法)

    以制作yolov5的数据集为例,利用labelimg制作自己的深度学习目标检测数据集的正确方法 文章目录 前言 一.labelimg简单介绍 1 VOC标签格式,保存为xml文件. 2 yolo标签格 ...

  3. 目标检测数据集MSCOCO简介

    简介 介绍一下目标检测领域另外一个比较有名的数据集 MS COCO (Microsoft COCO: Common Objects in Context) . MSCOCO 数据集是微软构建的一个数据 ...

  4. 目标检测数据集PASCAL VOC简介

    简介 PASCAL VOC挑战赛 (The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛, PASCAL全称:Pattern Analysis, Stat ...

  5. 使用yolov5训练自己的目标检测数据集

    使用yolov5训练自己的目标检测数据集 yolov4出来后不久,又出现了yolov5,没有论文.虽然作者没有放上和yolov4的直接测试对比,但在COCO数据集的测试效果还是很可观的.很多人考虑到Y ...

  6. 目标检测 数据集—标注工具 labelImg/labelme

    版权声明:转载请说明来源,谢谢 https://blog.csdn.net/wsp_1138886114/article/details/85017498 文章目录 一.使用 LabelImg生成目标 ...

  7. 数据集:Udacity Self-Driving 目标检测数据集

    转载自:http://blog.csdn.net/jesse_mx/article/details/72599220 前言 之前,博主为了得到更好的车载视频目标检测效果(偏工程实际,非刷榜),使用SS ...

  8. PASCAL VOC目标检测数据集格式转化为COCO目标检测数据集格式

    VOC2012目标检测数据集格式转化为COCO目标检测数据集格式 你只需要传入一个VOC数据集根路径可以直接运行,简直不要太方便好吧 需要材料: VOC2012原始数据集 一个pycharm项目文件夹 ...

  9. 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式

    VOC目标检测数据集的格式 其中图片存放在JPEGImages文件夹中,标注是xml文件,存储在Annotations文件中 关于train集和val集的txt划分存放在ImageSets文件夹下面的 ...

最新文章

  1. 【二级java】模拟题知识点总结
  2. 2016已经过去,2017即将开始
  3. 软件调试学习笔记(六)—— 硬件断点
  4. 对话高博(一)| 机器码、Pascal,以及计算机学习的分形
  5. linux c之动态打开链接库(dlopen dlsym dlclose)
  6. React-Router面试题汇总
  7. Spark中导入scalax
  8. 【PHP】wx_sample.php 微信初始化开发者模式
  9. CISC 332*/CMPE 332* –Database Management Systems
  10. hp服务器 raid卡驱动安装系统,hp 服务器 linux raid驱动
  11. fan4801开关电源原理图_六款简单的开关电源电路设计,内附原理图详解
  12. 中文分词 正向最大匹配法 逆向最大匹配法 双向最大匹配法
  13. 修复windows系统引导
  14. VMware 虚拟机开启Ip地址自动更换解决
  15. 如何有效预防ddos攻击
  16. 传奇单机架设教程 小白也能开传奇
  17. 攻防演练建设过程中技术考虑
  18. android 点击变色的两种情况、textview点击变色以及自定义checkbox
  19. VC中_T()的作用
  20. 人工智能工程师的三个层次

热门文章

  1. 求最长上升子序列——LIS的O(nlogn)算法(二分)
  2. Eval Reset忘记重置怎么办
  3. 怎么远程控制linux,Linux远程控制
  4. 谷歌 汽车 android auto link,谷歌将推出Auto Link智能车载系统
  5. PostgreSQL 从备份原理 到 PG_PROBACKUP
  6. java.lang.IllegalArgumentException: Not an entity: class
  7. 618电商平台鏖战,天猫618才是绝对主场
  8. Leetcode经典面试题 -- 第3周
  9. 华为手机连电脑当摄像头用_今天才知道,华为手机摄像头还能这样用!还不会用你买什么华为?...
  10. 苹果 IAP 支付服务端处理完整流程及注意事项(包含订阅商品处理)