【W1】记录文档

导出数据结构

关系结构

 任务 -> 批次 -> 条目 -> 帧

YOLO

一张图片对应一个文本文件

	.txt
	<object-class> <x> <y> <width> <height>
	归一化处理
	找到物体在图像中的中心点的 x,y 坐标
	物体在图像中的宽度和高度

YOLO

VOC

一张图片对应一个XML文件

.xml

VOC

<annotation>
    <folder />
    <filename>IMG20240423143425.jpg</filename>  # 文件名
    <path>NjY4Y2Y5NzAwZjdmMjU4NDVkZTkzODlm/20240709164944/番茄照片_副本/IMG20240423143425.jpg</path>
    <source>
        <database>Unknown</database>
    </source>
    <size> # 图片尺寸,用于对bbox左上和右下坐标点做归一化操作
        <width>3072</width>
        <height>4096</height>
        <depth>3</depth>
    </size>
    <segmented>0</segmented> # 是否用于分割
    <object>
        <name>无遮挡</name> # 物体类别
        <pose>Unspecified</pose> # 拍摄角度: front, rear, left, right, unspecified 
        <truncated>Unspecified</truncated> # 目标是否被截断(比如在图片之外),或者被遮挡(超过15%)
        <difficult>0</difficult> # 检测难易程度,这个主要是根据目标的大小,光照变化,图片质量来判断
        <bndbox> # boundingbox左上角点的横纵坐标, 右下角点的横纵坐标
            <xmin>1403</xmin>
            <ymin>522</ymin>
            <xmax>1894</xmax>
            <ymax>1137</ymax>
        </bndbox>
    </object>
</annotation>

LabelMe

一个图片对应一个JSON文件

 version:版本信息
 flags:可以为空
 shapes:包含图片所有标注信息的数组
 imagePath:图片路径
 imageData:图片的Base64形式
 imageHeight:图片的高
 imageWidth:图片的宽
shapes字段是包含多个目标的标注信息的数组。
[
	{
  	"label": "people", 
  	"points": [[x1,y1],[x2,y2],...[xn,yn]] 
  },
	{
  	"label": "car",
  	"points": [[x1,y1],[x2,y2],...[xn,yn]]
	},
	...
]

COCO

一个批次一个JSON文件

 .json
 边界框(bbox)以[x_min, y_min, width, height]形式标注
 分别为边界框的左上角坐标,宽度和高度
{
  "images" : 图片信息
  "categories" : 标注种类
  "annotations" : 标注
}

JSON

可视化

from PIL import Image, ImageDraw
import json
from pathlib import Path
from urllib.parse import urlparse

json_path = Path("D:/0815change/2024-08-16_07_33_35-export/data/ZGY_2824.json")
with json_path.open(encoding="utf-8") as f:
    json_data = json.load(f)

# 0 代表无遮挡 1 代表有遮挡
mode = 0

for img in json_data:
    url = img['info']
    urls = urlparse(url)
    filename = Path(urls.path).name
    # 获取到文件名
    print(filename)

    img_url = "D:/0815change/2024-08-16_07_33_35-export/resource/20240709164944/番茄照片_副本/" + filename
    image = Image.open(img_url)

    # 获取点的信息
    points = img['labels']
    for j in points:
        for k in j.items():
            if k[0] == "label" and k[1] == "无遮挡":
                mode = 0
            if k[0] == "label" and k[1] == "被遮挡":
                mode = 1
            if k[0] == "points":
                x1 = k[1][0]
                y1 = k[1][1]
                x2 = k[1][2]
                y2 = k[1][3]
                rect_coords = (x1, y1, x2, y2)
                draw = ImageDraw.Draw(image)
                if mode == 0:
                    draw.rectangle(rect_coords, outline="blue", width=5)
                else:
                    draw.rectangle(rect_coords, outline="green", width=5)
    image.show()

运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值