PRW 数据集mat 转txt

 PRW  有两个版本,有一个分了测试集和训练集但是标签是mat 类型,还有一个标签是txt 类型但是没分测试集和训练集。为了对比效果,我把原始的mat 类型的变成了txt 类型的。

这是PRW的目录结构,frame_test.mat 存放的是所有测试集的文件名,annotations存放的是所有的图片的标签包括训练集和测试集。

值得注意的一点,这里标签的point是左上角的点不是中心点

import os

import numpy
import shutil

from scipy.io import loadmat
from tqdm import tqdm
import os.path as osp
from PIL import Image

datasetdir = "E:/workspace/dataset/PRW-v16.04.20/PRW-v16.04.20"
dstdir = "E:/workspace/dataset/PRW_yolo"

imgsrc = osp.join(datasetdir,"frames")
labelsrc = osp.join(datasetdir,"annotations")

trainmat =loadmat( osp.join(datasetdir,"frame_train.mat"))
trainfn = trainmat["img_index_train"]

testmat =loadmat( osp.join(datasetdir,"frame_test.mat"))
testfn = testmat["img_index_test"]

imgtrain = osp.join(dstdir,"images/train")
lable_train = osp.join(dstdir,"labels/train")

imgtest = osp.join(dstdir,"images/val")
lable_test = osp.join(dstdir,"labels/val")

os.makedirs(imgtest,exist_ok=True)
os.makedirs(lable_test,exist_ok=True)
os.makedirs(imgtrain,exist_ok=True)
os.makedirs(lable_train,exist_ok=True)
def convert(imagenames, dstimgdir,dstlabledir):
    for fn in tqdm(imagenames):
        fn = fn[0][0]
        fnimg = fn + ".jpg"
        shutil.copy(osp.join(imgsrc,fnimg),
                    osp.join(dstimgdir,fnimg)
                    )
        img = Image.open(osp.join(imgsrc,fnimg))
        h = img.height
        w = img.width
        fnlabel = fn + ".jpg.mat"
        mat = loadmat(osp.join(labelsrc,fnlabel))
        keys = list(mat.keys())
        key = keys[-1]

        f = open(osp.join(dstlabledir, fn+".txt"), "w", encoding="utf-8")
        lables = mat[key]
        for label in lables:
            pointx_p = float(label[-4]) / w
            pointy_p = float(label[-3]) / h
            w_p = float(label[-2]) / w
            h_p = float(label[-1]) / h
            f.write("0 " + str(pointx_p + w_p/2) + " " + str(pointy_p + h_p/2) + " "
                    + str(w_p) + " " + str(h_p) + "\n")
        f.close()
convert(testfn,imgtest,lable_test)
convert(trainfn,imgtrain,lable_train)

 最后的目录结构张这样

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值