我尝试使用python读取点云数据文件,扩展名为“.pcd”。它们只用一个numpy float32存储RGBA颜色信息。
如何在python中将float32
数据类型转换为4个uint8
数字?
例如,数字4.51073351e-39中隐藏的rgb值是什么?
In [13]: pc.pc_data["rgb"]
Out[13]:
array([ 4.51073351e-39, 4.41853788e-39, 4.87845245e-39, ...,
3.31220574e-39, 2.94594696e-39, 3.12997949e-39], dtype=float32)
以下是下载数据集的链接:http://rgbd-dataset.cs.washington.edu/dataset/rgbd-dataset_pcd_ascii/apple_1.tar
我使用pypcd来读取文件:这是pypcd github链接:https://github.com/dimatura/pypcd
答案 0 :(得分:2)
我认为你想要pc.pc_data["rgb"].view((np.uint8, 4))
,你的例子给出了:{/ p>
array([[23, 30, 49, 0],
[22, 29, 48, 0],
[36, 31, 53, 0],
...
[21, 17, 36, 0],
[26, 20, 32, 0],
[28, 21, 34, 0]], dtype=uint8)
答案 1 :(得分:1)
派对真的很晚,但pypcd(此处作者)实际上将此功能设为Digest::SHA256.digest('pancakes')
# => "\xD0@;\xE2\x99\x9CH\x99\xEF:>=f\xD5]\xF4h\x9F\x7F\xC5~\xBF\x8A\xB5yu\x94\x92M\x12O\x99"
Digest::SHA256.hexdigest('pancakes')
# => "d0403be2999c4899ef3a3e3d66d55df4689f7fc57ebf8ab5797594924d124f99"
Digest::SHA256.base64digest('pancakes')
# => "0EA74pmcSJnvOj49ZtVd9Giff8V+v4q1eXWUkk0ST5k="
,您可以将其称为decode_rgb_from_pcl
。不可否认,我喜欢@Eric实现这个比我更好的方式:D