経緯
最近、Depth画像の特定のピクセルの距離を求めたいときがありました。そこで、特定のピクセルにアクセスする方法を調べたので共有します。ピクセル(RGB)への色々なアクセス方法を知りたい方はこちらの記事が参考になると思います。
方法
自分はrealsenseで取得した16UC1のDepthデータのピクセルを取得しました。下のようにat<>を使えばいけます。depth_img(Mat型)の座標(x, y)を取得したいと仮定しています。
depth_img.at<ushort>(y,x)
他の16U以外の場合は以下のようにして取得できます。
Mat.at<short>(y,x) // CV_16S
Mat.at<int>(y,x) // CV_32S
Mat.at<float>(y,x) // CV_32F
Mat.at<double>(y,x) // CV_64F
詳しくは公式をご覧ください。
まとめ
realsenseのピクセルにdepth scaleを掛けて距離を算出してみたんですが、結構ガバガバな気がします。3mぐらいの距離あるはずなのに0.1mとかザラにあります(笑)。やっぱりすべてのピクセルの値を正確に取得するのは難しいのかな。
間違いや質問、ご意見等ありましたらお気軽にコメントください。頑張って答えますので(笑)。