FRGC2.0 三维人脸数据集批量解压 以及 abs格式转化xyz

'''
# -*- coding: utf-8 -*-
# @Time    : 2020/12/7 下午2:32
# @Author  : YAO XINGTIAN
# @FileName: abs.py
# @Software: PyCharm
# @Blog    :https://mp.csdn.net/editor/html/110819381/
'''
abs.gz文件批量解压:
import gzip
import glob

save_path = '/media/yao/Elements SE/AI/Datasets/FRGC2.0/Fall2003range_extract/' # 文件保存目录
file_list = glob.glob('/media/yao/Elements SE/AI/Datasets/FRGC2.0/Fall2003range/*gz') # 获取abs.gz 文件列表

sum = 0
for file in file_list:
     print(file)
     file_name_ = file.split('/')[-1].split('.')[0] # # 获取文件名
     file_name = file_name_ + '.xyz' # 保存的文件格式
     print(file_name)

     #对压缩文件.gz进行解压
     g_file = gzip.GzipFile(file)
     #将解压后的文件保存到save_path里面
     open(save_path+file_name, "wb+").write(g_file.read())
     g_file.close()
     sum += 1

print('total files:' , sum)



FRGC2.0 中abs文件解析

import os
readpath='/home/yao/PycharmProjects/Image_pre/absFiles' # abs文件目录
writepath='02463d546' # 保存文件目录

if not os.path.exists(writepath):
    os.makedirs(writepath)
for root,dir,files in os.walk(readpath):
    # print(root,dir,files)
    for newfilename in files:
        abs_path=os.path.join(readpath,newfilename)
        print('newfilename',newfilename)
        absfile=open(abs_path,'r')
        xyzpath=os.path.join(writepath,os.path.splitext(newfilename)[0]+'.xyz')
        print('xyzpath',xyzpath)
        xyzfile=open(xyzpath,'w')
        tab=str.split(absfile.readline())
        print('tab',tab)
        rows=int(tab[0])
        tab=str.split(absfile.readline())
        columns=int(tab[0])
        tab=str.split(absfile.readline())
        flags=list(map(int,str.split(absfile.readline())))
        X=list(map(float,str.split(absfile.readline())))
        Y=list(map(float,str.split(absfile.readline())))
        Y_sorted=sorted(Y)
        print(len(Y_sorted))
        # exit()
        # size=len(Y_sorted)

        Z=list(map(float,str.split(absfile.readline())))
        absfile.close()
        size=len(X)
        # print(size)
        croppedface=[]
        for i in range(0,size):
            if flags[i]==1:
                if Y[i]> -150:
                    line=str(X[i]) + ' ' + str(Y[i]) + ' ' + str(Z[i]) + '\n'
                    xyzfile.write(line)
        xyzfile.close()

xyz点云图如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值