欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 【Python】读取xyz坐标文件输出csv文件

【Python】读取xyz坐标文件输出csv文件

2025/4/18 20:37:25 来源:https://blog.csdn.net/weixin_43050480/article/details/147201463  浏览:    关键词:【Python】读取xyz坐标文件输出csv文件

Python读取xyz坐标文件输出csv文件

import sys
import numpy as np 
import pandas as pd 
from tqdm import tqdm 
import cv2
import argparsedef read_xyz(file_path):with open(file_path, "r") as f:  # 打开文件data = f.readlines()  # 读取文件datas = []for i in tqdm(data[7:8]):i_split = i.split(' ')eta= float(i_split[6])for i in tqdm(data[14:-1]):i_split = i.split(' ')x = int(i_split[0])y = int(i_split[1])try:z = float(i_split[2].split('\n')[0])except ValueError:z = 0datas.append([x,y,z])return datas,etadef convert_cv_mat(data,vis=False):data_mat = np.ones(shape=[1024,1024,1], dtype=np.uint8)for i in data:if i[2] == 0:data_mat[i[0],i[1],0] = 0 else:data_mat[i[0],i[1],0] = 255 if vis:cv2.imshow('data_mat', data_mat)cv2.waitKey(1000)cv2.destroyAllWindows()return data_matdef center(img,vis=False):canny_output = cv2.Canny(img, 50, 50 * 2)contours,hierarchy = cv2.findContours(canny_output, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)#RETR_EXTERNAL  # 1msf_cx = 0f_cy = 0f_a = 0f_b = 0f_angle = 0area = 0for c in range(len(contours)):if len(contours[c]) < 5:continue# 椭圆拟合(cx, cy), (a, b), angle = cv2.fitEllipse(contours[c]) # 1msif a * b > area:f_cx = cxf_cy = cyf_a = af_b = bf_angle = anglearea = a * bif vis:cv2.circle(img,(np.uint16(np.around(f_cx)),np.uint16(np.around(f_cy))),5,(0,255,255),-1)cv2.putText(img,'cx:{}, cy:{}'.format(np.int32(f_cx),np.int32(f_cy)),(50,100),cv2.FONT_HERSHEY_COMPLEX,2,(0,0,255),2)cv2.imshow('img', img)cv2.waitKey(1000)cv2.destroyAllWindows()return np.int16(np.around(f_cy)), np.int16(np.around(f_cx)) # 需要反过来def to_csv(data, file_name, cx=512, cy=512, eta = 8.41837e-005):datas = []for i in data:x = (i[0] - cx)*eta*1000# x = (cx - i[0])*eta*1000# y = (i[1] - cy)*eta*1000y = (cy - i[1])*eta*1000z = i[2] # int(abs(i[2]))*100datas.append([x,y,z])df = pd.DataFrame(datas, index=None,columns=['x', 'y', 'z'])df.to_csv(file_name+'_data.csv',index=None)if __name__ == "__main__":# parser = argparse.ArgumentParser()# parser.add_argument('--file', type=str, default='./1.xyz')# args = parser.parse_args()#arguments = input("please enter the data: ")arguments = sys.argv[1];# 读取数据# data,eta = read_xyz(args.file)data,eta = read_xyz(arguments)# 数据转换为opencv 图像数据 cv:Mat data_mat = convert_cv_mat(data, vis=False)# 找图像质心cx, cy = center(data_mat, vis=False)# 保存数据# to_csv(data,args.file,cx,cy,eta)to_csv(data,arguments,cx,cy,eta)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词