Halcon快速讀取點雲的方法

2021-10-19 07:25:05 字數 2022 閱讀 8910

直接上**:

dev_update_off (

)filename :

='1.txt'

//點雲資料的名稱,.txt、.csv、.asc等格式的都可以

numcolumns :=3

//如果點雲的每行資料有3個數字就寫3 (只有xyz 的資料)

count_seconds (then)

open_file (filename,

'input'

, filehandle)

vecoutline.

clear()

repeat

fread_line (filehandle, vecoutline.

at(vecoutline.

length()

), iseof)

until (iseof)

convert_vector_to_tuple (vecoutline, p)

p := p[0:

|p|-2]

p :=

split

(p,' '

)stop ()*

//最重要的就是理解這些正則運算子代表的意思。

*^ 匹配字串開頭

* \ 轉義字元

* \s 匹配空白字元

** 允許前面的文字或 組0次或多次重複

* ()對子模式進行分組,並建立乙個捕獲組

*. 匹配除換行符以外的任何字元

*+ 允許1次或多次重複

* ? 允許1次或者多次重複

* $ 匹配字串的結尾(允許尾部換行符)

number :

=number

(regexp_replace

(p,'^\\s*0*(.+?)\\s*\n*$'

,'$1'))

p := hnull

indexisstring :

=find

(type_elem

(number)

,h_type_string)

if(indexisstring >-1

)throw

('could not convert "'

+ number[indexisstring]

+'" to a number'

)endif

x := number[[0

:numcolumns:

|number|-1

]]y := number[[1

:numcolumns:

|number|-1

]]z := number[[2

:numcolumns:

|number|-1

]]number :

= hnull

close_file (filehandle)

count_seconds (now)

durationseconds :

= now - then

msg :

='opening file '

+ filename +

' in '

+ durationseconds +

's'dev_inspect_ctrl (msg)

gen_object_model_3d_from_points (x, y, z, objectmodel3d)

x := hnull

y := hnull

z := hnull

dev_get_window (windowhandle)

visualize_object_model_3d (windowhandle, objectmodel3d,

,,['lut'

,'color_attrib'

,'disp_pose'],

['color1'

,'coord_z'

,'true'],

,[],

, poseout)

使用這個方法讀取點雲,測試過160萬個資料只需要30幾秒左右。

python快速讀取非常大的檔案

讀取大檔案是我們平時經常會遇到的問題,我這裡給出兩個比較好的解決方案。第一種 with open test.txt as f for line in f do something with data這種做法非常的簡單。這個 在開啟檔案的過程中,不會一次性讀取全部檔案,而是採用每次讀取一行的方式,類似...

增加快速讀寫的兩個方法

1.在主函式的開頭加入下面一段 ios sync with stdio false cin.tie 0 2.快速讀寫 首先要引入 cstdio 和 iostream 這兩個庫 其次再加入下面一系列 using namespace std namespace fast io while isdigit...

PCL點雲的基本讀取和顯示

廢話不多說,直接上 這是最基本的讀取與顯示,皆是利用pcl庫 include 標準輸入輸出流 include pcl的pcd格式檔案的輸入輸出標頭檔案 include pcl對各種格式的點的支援標頭檔案 include int main int argc,char argv std cout loa...