how to read 16UC1 encoded uint8 depth data

16 ビュー (過去 30 日間)
Ramanpreet
Ramanpreet 2016 年 6 月 10 日
回答済み: Sebastian Castro 2018 年 3 月 21 日
I have a ros bag file saved from ubuntu using rosbag capture command on the terminal using a kinect and some other sensors. Now i am trying to read the file in matlab on my windows machine. I can read the data, and color image just fine. For color image, i had to demosaic but it works correctly.
My problem is arising on depth image. As you can see in the image it is saved using 16uc1 flag, but is a uint8 datatype with double the arraysize (640*480 should be 307200, this one is twice that). How do i read in the depth information properly in matlab from a standard rosbag file. The topic i am listening to is /camera/depth_registered/image_raw is that helps.

採用された回答

Walter Roberson
Walter Roberson 2016 年 6 月 10 日
reshape(typecast(Data, 'uint16'), Height, Width)
Possibly you might need
reshape(typecast(Data, 'uint16'), Width, Height) .'
  1 件のコメント
Ramanpreet
Ramanpreet 2016 年 6 月 10 日
Perfect! Really appreciate the quick response!

サインインしてコメントする。

その他の回答 (1 件)

Sebastian Castro
Sebastian Castro 2018 年 3 月 21 日
While Walter's approach is correct, there is a Robotics System Toolbox function called "readImage" which already operates on these image ROS messages and uses whatever encoding is provided.
img = readImage(msg)
... where msg corresponds to the above object.
- Sebastian

カテゴリ

Help Center および File ExchangeROS Log Files and Transformations についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by