国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Python_處理陣列式點云_讀取

2023-03-31 18:43 作者:Z5  | 我要投稿

前言

本文使用的模塊是numpy和ctypes,解析內(nèi)存里的數(shù)據(jù),并將之轉(zhuǎn)換為numpy數(shù)組

導入模塊:

正文

????原始數(shù)組在內(nèi)存里是以一維字節(jié)數(shù)組形式排列,需要把一維的字節(jié)數(shù)組轉(zhuǎn)為numpy數(shù)組,我們需要知道幾個預(yù)設(shè)值:

1. 點陣的尺寸(寬度width和高度height),用于初始numpy數(shù)組的shape屬性。

2. 點陣的通道數(shù),通常一個點包含了 X Y Z三個通道值,對于不同的傳感器,獲取的點陣信息結(jié)構(gòu)也不一樣,這里舉幾個常見的數(shù)據(jù)信息格式:

xyz_float32:xyz坐標值,用float32四字節(jié)表示一個值

總數(shù)據(jù)長度3*4*width*height

xyz_uint16:xyz坐標值,用uint16雙字節(jié)表示一個值

總數(shù)據(jù)長度(3*2+2)*width*height

xyzijk_float32: 在xyz_float32的基礎(chǔ)上,增加單位法向量值ijk

總數(shù)據(jù)長度6*4*width*height

xyzg_float32: 在xyz_float32的基礎(chǔ)上,增加灰度值gray

總數(shù)據(jù)長度(3*4+1+1)*width*height

xyzrgb_float32: 在xyz_float32的基礎(chǔ)上,增加r,g,b值

總數(shù)據(jù)長度(3*4+3*1+1)*width*height

等...以上格式中,未滿4字節(jié)的信息,一般會使用四字節(jié)對齊。比如xyzrgb_float32,xyz分別使用3個float32,rgb分別使用3個ubyte,共計15個字節(jié),為了對齊4字節(jié),會在最后補齊一字節(jié),做到16字節(jié)結(jié)構(gòu)。

知道上述兩點后,進入讀取數(shù)據(jù)環(huán)節(jié):

已經(jīng)三個變量,w(寬),h(高),data_ptr(原始數(shù)據(jù)數(shù)組指針)。

定義numpy數(shù)據(jù)格式,參照原始數(shù)據(jù)格式

names:通道名稱

formats:通道數(shù)據(jù)格式,'f4'表示四個字節(jié)長度的浮點數(shù),和原始數(shù)據(jù)保持一致

offsets:通道在原始字節(jié)中的偏移量

titles:另外一個名稱(具體不知道)

itemsize:單點數(shù)據(jù)長度,字節(jié)單位

申請一個內(nèi)存,用以存點陣字節(jié)數(shù)組

解析數(shù)據(jù)

得到了一個一維數(shù)組,對象是我們定義的dtype數(shù)據(jù)結(jié)構(gòu),這里已經(jīng)可以通過索引讀取對應(yīng)的數(shù)據(jù)值,注意此時是一維數(shù)組,當我們輸入像素坐標時[x,y]需要通過公式變換:

index%3Dx%2By*widht

查找一個像素位置[100,100]的點信息:

最后,結(jié)構(gòu)體化的數(shù)組并不適合我們后續(xù)做數(shù)據(jù)處理,因此我們需要把結(jié)構(gòu)體數(shù)組轉(zhuǎn)換為非結(jié)構(gòu)體數(shù)組

這里為了后續(xù)處理方便,G,M通道原本Ubyte格式的數(shù)據(jù),也強制轉(zhuǎn)為float32格式。

END


Python_處理陣列式點云_讀取的評論 (共 條)

分享到微博請遵守國家法律
屯门区| 兴安县| 九江市| 将乐县| 昔阳县| 福安市| 平安县| 湛江市| 靖边县| 叙永县| 五家渠市| 神农架林区| 温泉县| 手游| 易门县| 丘北县| 宣城市| 永嘉县| 镇巴县| 疏附县| 吉安县| 句容市| 丽江市| 博白县| 浑源县| 高雄县| 长乐市| 个旧市| 仁怀市| 华容县| 科尔| 澄迈县| 马公市| 温州市| 大渡口区| 长葛市| 开远市| 河西区| 东宁县| 墨竹工卡县| 育儿|