DepthImage to Mat (OpenCV) [closed]
I am working with a 3d camera that provides a depthimage which is encoded in 32FC1 I need the image in OpenCV format (Mat) in order to access each component as a matrix
The problem is that when I have done the transformation, I try to access the Matrix data with Mat::at but I can not see real values. I don't know where the problem is.
EDIT
I have discovered that the problem is the ros encoding of the image. I have simulated a depth camera and I don't know the equivalence between each pixel value and the distance it represents. My camera code is the following:
<gazebo reference="kinect_depth_frame">
<sensor type="depth" name="fotonic">
<update_rate>30.0</update_rate>
<camera name="fotonic">
<horizontal_fov>1.221730476</horizontal_fov> <!-- 70 deg -->
<image>
<width>800</width> <!-- 160 -->
<height>600</height> <!-- 120 -->
<format>R8G8B8</format>
</image>
<clip>
<near>0.05</near>
<far>7.0</far>
</clip>
<noise>
<type>gaussian</type>
<mean>0.0</mean>
<stddev>0.007</stddev>
</noise>
</camera>
<plugin name="kinect_depth_optical_frame_controller" filename="libgazebo_ros_openni_kinect.so">
<baseline>0.2</baseline>
<alwaysOn>true</alwaysOn>
<updateRate>30.0</updateRate>
<cameraName>fotonic_3dcamera</cameraName>
<imageTopicName>/fotonic_3dcamera/image_raw</imageTopicName>
<cameraInfoTopicName>/fotonic/depth/camera_info</cameraInfoTopicName>
<depthImageTopicName>/fotonic/depth/image_raw</depthImageTopicName>
<depthImageInfoTopicName>/fotonic_3dcamera/depth/camera_info</depthImageInfoTopicName>
<depthImageCameraInfoTopicName>/fotonic_3dcamera/camera_info</depthImageCameraInfoTopicName>
<pointCloudTopicName>/fotonic_3dcamera/depth/points</pointCloudTopicName>
<frameName>kinect_depth_optical_frame</frameName>
<pointCloudCutoff>0.5</pointCloudCutoff>
<distortionK1>0</distortionK1>
<distortionK2>0</distortionK2>
<distortionK3>0</distortionK3>
<distortionT1>0</distortionT1>
<distortionT2>0</distortionT2>
<CxPrime>0</CxPrime>
<Cx>0</Cx>
<Cy>0</Cy>
<focalLength>0</focalLength>
<hackBaseline>0</hackBaseline>
</plugin>
</sensor>
</gazebo>
Can you please add your code for retreiving your cv::Mat from the image message and the cv::Mat::at statement?