1. 程式人生 > >python讀取點雲txt檔案並顯示

python讀取點雲txt檔案並顯示

 

#-*-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, "兔子")

 程式顯示結果如下:

參考:Python實現讀取txt檔案並畫三維圖簡單程式碼示例