2020-07-03

クラスに格納されているデータをJSON形式に変換する(日本語文字列対応)

表題の通りです。肝は、
  • ensure_ascii=Falseを指定することで日本語対応
  • 正直、何をやっているのか不明(とりあえず動いた)
というところです。
(参考)


Python:RealsenseのDepthデータを16bit Grayscale Multi-Tiffで保存する

RealsenseのDepthデータを保存するには、
  1. Realsense Viewerで保存する
  2. 自前のプログラムで保存する
の2つの方法があります。前者については、Realsense Viewerの保存機能を利用することでROS-Bag形式で保存されるのですが、ファイルサイズがでかい。。。しかし、いつのまにかRealsense Viewerの保存オプションに圧縮というのがあって、それを使うと50%くらい圧縮してくれます。まあ、通常はこれをおすすめします。しかし、それでもでかいのでもっとファイルサイズを小さくできないか、、という後者の話が今日のネタです。

前提条件
今回の記事は、
  • Realsense ViewerでROS-Bagファイルとして保存しておく
  • そのROS-BagファイルをMulti-Tiffに変換する
という使い方を前提とします。本来であれば、リアルタイムにMulti-Tiffに変換できたらいいんですが、Pythonだとちょっと厳しい。。。フレームレートが半分以下になります。C#でマルチスレッドで処理すればいけそうですけど、暇な時にトライします(最近Pythonにどっぷりハマっているので、いつになるかは不明)

16bit Grayscale Multi-Tiffで保存する
いろいろ方法はあるのだと思いますが、今回は16bit Grayscale Multi-Tiffで保存する方法です。まあこれが一番ラクでしょう。Depthデータをそのまま放り込めばよくてしかも取り出しそのままでOK。
以下のサンプルプログラムの肝は
です。特に後者が大切です。この記事に限定する話ではないですが、これをFalseにしておかないと、非同期で処理が行われてしまい、フレームレートが落ちます。

画像の表示に注意
16bit Grayscale Multi-Tiffの画像は、
  • Windows10のフォトアプリ
  • ImageJ(オープンソースの画像処理系では有名なソフト)
などを利用することで表示できますが、個人的には後者がおすすめです。マウス操作で各ピクセルの画素値を表示してくれますので。なお、画像はほぼ真っ黒に見えると思います。その理由は、16bitだと0mm~65536mmの距離を記録できるわけですが、デプスデータは、せいぜい6000mmがMax。16bitの濃淡は表示される段階で8bitに変換されますので、ほぼ黒側(0側)に近いことになりますからね。目を凝らしてみると、黒の濃淡がわかるはずです。