人群计数--mat标注文件转txt的python脚本

开源数据的标注文件大多为mat格式,而在P2PNet框架下需要转为txt格式的文件。                               

笔者在网上找的大多是利用matlab进行转换 python的较少 且乱

笔者写的代码如下:
 

import os
import scipy.io as sio


def mat_to_txt(mat_file_path, txt_file_path):
    # 读取 .mat 文件中的 positions 数组
    data = sio.loadmat(mat_file_path)

    #############################################要依据打印出来的东西修改annPoints.
    print(type(data))
    print(data)
    positions = data['annPoints']  # 假设 .mat 文件中的变量名是 'annPoints'



    # 检查 positions 是否是一个二维数组,且每行有两个元素
    if positions.ndim != 2 or positions.shape[1] != 2:
        raise ValueError("positions should be a 2D array with 2 columns")

        # 将 positions 数组写入 .txt 文件
    with open(txt_file_path, 'w') as f:
        for x, y in positions:
            # 写入 x, y 坐标,每行一对坐标
            f.write(f'{x} {y}\n')

    print(f"转换完成:从 {mat_file_path} 到 {txt_file_path}")


def convert_all_mats_in_directory(directory_path):
    # 遍历目录中的所有文件
    for filename in os.listdir(directory_path):
        if filename.endswith('.mat'):  # 检查是否是 .mat 文件
            mat_file_path = os.path.join(directory_path, filename)
            # 构造 .txt 文件的路径,保持文件名不变,只改变扩展名
            txt_file_path = os.path.join(directory_path, os.path.splitext(filename)[0] + '.txt')
            # 调用 mat_to_txt 函数进行转换
            mat_to_txt(mat_file_path, txt_file_path)

        # 使用示例


mat_files_directory = r"Q:\crowde counting\label\label_18\label_18\test"  # 替换为你的 .mat 文件所在的目录路径

convert_all_mats_in_directory(mat_files_directory)

你要修改两个地方:

1:你mat目录的地址

2:你mat文件的“键”是什么(python读进来是一个字典文件,具体键名要打印出来看看。比如我的键就是annPoints)

完成后效果:

txt文件内容:

ok写完了    有什么问题评论区问 看到会回

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值