当前位置:网站首页>widerperson数据集转化为YOLO格式
widerperson数据集转化为YOLO格式
2022-07-06 19:03:00 【-添砖Java】
- 先按照train.txt和val.txt中的内容,将训练集图片和注释全部放在train文件夹下,验证集也是一样。
import os
from pathlib import Path
from PIL import Image
import csv
import shutil
# coding=utf-8
def check_charset(file_path):
import chardet
with open(file_path, "rb") as f:
data = f.read(4)
charset = chardet.detect(data)['encoding']
return charset
def convert(size, box0, box1, box2, box3):
dw = 1. / size[0]
dh = 1. / size[1]
x = (box0 + box2) / 2 * dw
y = (box1 + box3) / 2 * dh
w = (box2 - box0) * dw
h = (box3 - box1) * dh
return (x, y, w, h)
if __name__ == '__main__':
path = 'F:\dataset\WiderPerson/train.txt'
with open(path, 'r') as f:
img_ids = [x for x in f.read().splitlines()]
for img_id in img_ids: # '000040'
img_path = 'F:\dataset\WiderPerson\Images/' + img_id + '.jpg'
with Image.open(img_path) as Img:
img_size = Img.size
ans = ''
label_path = img_path.replace('Images', 'Annotations') + '.txt'
outpath = 'train/' + img_id + '.txt'
with open(label_path, encoding=check_charset(label_path)) as file:
line = file.readline()
count = int(line.split('\n')[0]) # 里面行人个数
line = file.readline()
while line:
cls = int(line.split(' ')[0])
if cls == 1 or cls == 2 or cls == 3:
xmin = float(line.split(' ')[1])
ymin = float(line.split(' ')[2])
xmax = float(line.split(' ')[3])
ymax = float(line.split(' ')[4].split('\n')[0])
print(img_size[0], img_size[1], xmin, ymin, xmax, ymax)
bb = convert(img_size, xmin, ymin, xmax, ymax)
ans = ans + '1' + ' ' + ' '.join(str(a) for a in bb) + '\n'
line = file.readline()
with open(outpath, 'w') as outfile:
outfile.write(ans)
shutil.copy(img_path, 'train/' + img_id + '.jpg')
- 将图片和注释分开,放在各自的文件夹中
import shutil
import os
if __name__ == '__main__':
label_path=r"train/"
imgids = os.listdir(label_path)
print(len(imgids))
n=0
for i in imgids:
n += 1
img_ids_path = label_path.replace('labels', 'images')+ i[0:6] +'.txt'
To_imgpath=r'train\anno/'
print(img_ids_path,To_imgpath,n)
shutil.copy(img_ids_path, To_imgpath)
OK!!!
参考博客:https://blog.csdn.net/qq_44224801/article/details/123480032
参考博客:https://blog.csdn.net/wukong168/article/details/122697243
边栏推荐
- 牛客编程题--必刷101之双指针篇
- postgresql之整体查询大致过程
- 软件测试——Jmeter接口测试之常用断言
- go swagger使用
- 【论文阅读|深读】DNGR:Deep Neural Networks for Learning Graph Representations
- 【论文阅读|深读】RolNE: Improving the Quality of Network Embedding with Structural Role Proximity
- CSDN 夏令营课程 项目分析
- This week's hot open source project!
- unity中跟随鼠标浮动的面板,并可以自适应文字内容的大小
- #yyds干货盘点# 解决名企真题:最大差值
猜你喜欢

C#/VB.NET 删除Word文檔中的水印

软件测试——Jmeter接口测试之常用断言

Processus général de requête pour PostgreSQL

Cloud Mail .NET Edition

Infrared camera: juge infrared mag32 product introduction

Ali yunyili: how does yunyuansheng solve the problem of reducing costs and improving efficiency?

Lombok makes the pit of ⽤ @data and @builder at the same time

Lidar: introduction and usage of ouster OS

AWS学习笔记(一)

Douban average 9 x. Five God books in the distributed field!
随机推荐
老板被隔离了
C#/VB.NET 删除Word文档中的水印
导数、偏导数、方向导数
如何从0到1构建32Core树莓派集群
Web3的先锋兵:虚拟人
15million employees are easy to manage, and the cloud native database gaussdb makes HR office more efficient
Stm32f4 --- PWM output
Ali yunyili: how does yunyuansheng solve the problem of reducing costs and improving efficiency?
ODBC database connection of MFC windows programming [147] (with source code)
Why am I warned that the 'CMAKE_ TOOLCHAIN_ FILE' variable is not used by the project?
Lumion 11.0 software installation package download and installation tutorial
Introduction to the internal structure of the data directory of PostgreSQL
6-6漏洞利用-SSH安全防御
FLIR blackfly s usb3 industrial camera: how to use counters and timers
postgresql之整体查询大致过程
Work of safety inspection
Argo workflows source code analysis
Untiy文本框的代码换行问题
C#/VB.NET 删除Word文檔中的水印
[server data recovery] data recovery case of a Dell server crash caused by raid damage