想定する読者
stereolabsのzed2, zed mini, zed z などのステレオカメラの利用者
いまどきのステレオカメラは何ができるのかを知りたい人
前提
ZED SDK 4.0
ZED SDK が提供している方法
.py
point_cloud_to_save = sl.Mat()
zed.retrieve_measure(point_cloud_to_save, sl.MEASURE.XYZRGBA, sl.MEM.CPU)
err = point_cloud_to_save.write('Pointcloud.ply')
自前でply ファイルを保存する方法
ascii 形式で出力されたply ファイルを読んでみよう。
header 行のあとは、簡単なデータ形式になっているのがわかるだろう。
それを利用して自前で書くことも可能だ。
注意点:
-
zed.retrieve_measure(point_cloud_to_save, sl.MEASURE.XYZRGBA, sl.MEM.CPU)
で取得したpoint_cloud_to_saveのデータの中には、有限でない値の座標を含んでいる。(すなわちnp.isfinite()を満たさない座標も含んでいるので、有限の値の座標だけを出力対象にすること。
自前でplyファイルを出力する場合には、forループを書くことになるので、遅くなりやすい。
標準で用意されているやり方で十分ならば、自前の処理をかかないこと。
point_cloud に影響する設定
- fill_mode にするかどうか
- カメラの解像度
- sl.RESOLUTION
- カメラの撮影条件各種(露出など)
-
sl.VIDEO_SETTINGS
の各種項目 - depth_modeの設定