目标检测的边界框显示代码实现

该博客展示了如何使用Python和Matplotlib库处理图像数据集,特别是读取图像和显示带有边界框的图像。代码从文本文件中读取边界框坐标,并将其转换为矩形图形在图像上进行标注。例子中涉及苹果图像的边界框标注。
摘要由CSDN通过智能技术生成

数据集格式如下【标注的真差!!!

Dataset/ArtificialLight/image-116.png, 845, 104, 104, 126, 929, 795, 104, 118, 
Dataset/ArtificialLight/image-117.png, 606, 250, 118, 127, 540, 93, 111, 106, 797, 167, 103, 121, 
Dataset/ArtificialLight/image-118.png, 751, 33, 132, 144, 309, 82, 120, 130, 522, 312, 127, 133, 369, 677, 149, 155, 770, 219, 117, 133, 897, 18, 116, 113, 492, 678, 123, 144, 89, 297, 129, 111, 
Dataset/ArtificialLight/image-119.png, 736, 382, 133, 146, 742, 722, 102, 119, 1175, 157, 100, 109, 1088, 264, 101, 122, 458, 573, 98, 119, 141, 583, 129, 134, 786, 476, 115, 149, 
Dataset/ArtificialLight/image-120.png, 786, 45, 139, 157, 1039, 71, 128, 133, 150, 29, 139, 122, 
Dataset/ArtificialLight/image-121.png, 735, 455, 132, 134, 962, 294, 101, 101, 

代码如下

import torch
import numpy as np
import matplotlib.pyplot as plt
from d2l import torch as d2l

imgPath = "/liu/WSU_apple_dataset/ArtificialLight/image-33.png"
labelPath = "/liu/WSU_apple_dataset/ArtificialLight/AnnoArtificialLight.txt"

image_list = []
with open(labelPath,"r") as file:
    pictures = file.readlines()
    for i in pictures:
        img = i.strip().split(',')
        image_list.append(img[0].split('/')[-1])

gt_list = []
with open(labelPath,'r') as file:
    pictures = file.readlines()
    for i in pictures:
        gt_list.append(i.strip().split(',')[1:-1:])

def list_split(items, n):
    for i in range(len(items)):
        items[i] = int(items[i].strip())
    return [items[i:i+n] for i in range(0, len(items), n)]
gt = []
for i in gt_list:
    tem = list_split(i,4)
    gt.append(tem)
img = d2l.plt.imread(imgPath)
d2l.set_figsize()
d2l.plt.imshow(img);

#@save
def bbox_to_rect(bbox, color):
    return d2l.plt.Rectangle(xy=(bbox[0], bbox[1]), width=bbox[2],
                             height=bbox[3], fill=False,
                             edgecolor=color, linewidth=0.5)

def show_bbox(img,apples,color):
    fig = d2l.plt.imshow(img)
    for i in apples:
        fig.axes.add_patch(bbox_to_rect(i,color))
index = imgPath.split(".")[0].split("-")[1]
show_bbox(img,gt[int(index)-1],'red')
#plt.savefig("2.png",dpi=300)
plt.show()

效果如下
在这里插入图片描述

参考:【1】https://blog.csdn.net/wander_ing/article/details/107093485?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-3.no_search_link
【2】李沐-《动手学》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值