python讀取點雲txt檔案並顯示
阿新 • • 發佈:2018-12-04
#-*-coding:utf-8-*- import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def readXYZfile(filename, Separator): data = [[], [], []] f = open(filename,'r') line = f.readline() num = 0 while line: #按行讀入點雲 c,d,e = line.split(Separator) data[0].append(c) #X座標 data[1].append(d) #Y座標 data[2].append(e) #Z座標 num = num + 1 line = f.readline() f.close() #string型轉int型 x = [ float(data[0] ) for data[0] in data[0] ] z = [ float(data[1] ) for data[1] in data[1] ] y = [ float(data[2] ) for data[2] in data[2] ] print("讀入點的個數為:{}個。".format(num)) point = [x,y,z] return point #三維離散點圖顯示點雲 def displayPoint(data,title): #解決中文顯示問題 plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False #點數量太多不予顯示 while len(data[0]) > 20000: print("點太多了!") exit() #散點圖引數設定 fig=plt.figure() ax=Axes3D(fig) ax.set_title(title) ax.scatter3D(data[0], data[1],data[2], c = 'r', marker = '.') ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') plt.show() if __name__ == "__main__": data = readXYZfile("demo.txt",',') displayPoint(data, "兔子")
程式顯示結果如下: