首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ROS中获取RealSense深度帧

在ROS中获取RealSense深度帧
EN

Stack Overflow用户
提问于 2020-07-16 15:29:28
回答 2查看 3.8K关注 0票数 3

我在Gazebo的环境中有一架无人机,上面有一个RealSense d435摄像头。我的计划是使用YOLO找到感兴趣对象的中心,然后从深度图像中找到该点的深度。我听说深度摄像机输出一个图像,其中深度值被编码在RGB值中。当我在网上进一步查找这个问题时,我发现有一个pyrealsense2库可以满足我所需的所有功能。

我在网上看到的实现需要您创建一个pyrealsense.pipeline()并从中获取框架。问题是,这似乎只有当您有一个RealSense相机连接到您的计算机。由于矿山存在于Gazebo环境中,我需要一种获取和使用ROS回调中的深度框架的方法。我该怎么做?任何指示都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-17 17:52:41

是的,您可以在ROS订阅服务器的帮助下这样做,如下所示(大部分代码取自这里):

代码语言:javascript
复制
import rospy
from sensor_msgs.msg import Image as msg_Image
from cv_bridge import CvBridge, CvBridgeError
import sys
import os

class ImageListener:
    def __init__(self, topic):
        self.topic = topic
        self.bridge = CvBridge()
        self.sub = rospy.Subscriber(topic, msg_Image, self.imageDepthCallback)

    def imageDepthCallback(self, data):
        try:
            cv_image = self.bridge.imgmsg_to_cv2(data, data.encoding)
            pix = (data.width/2, data.height/2)
            sys.stdout.write('%s: Depth at center(%d, %d): %f(mm)\r' % (self.topic, pix[0], pix[1], cv_image[pix[1], pix[0]]))
            sys.stdout.flush()
        except CvBridgeError as e:
            print(e)
            return


if __name__ == '__main__':
    rospy.init_node("depth_image_processor")
    topic = '/camera/depth/image_rect_raw'  # check the depth image topic in your Gazebo environmemt and replace this with your
    listener = ImageListener(topic)
    rospy.spin()

注意事项:要安装CvBridge,您可以遵循以下说明:

代码语言:javascript
复制
 sudo apt-get install ros-(ROS version name)-cv-bridge

 sudo apt-get install ros-(ROS version name)-vision-opencv

更多信息:

票数 1
EN

Stack Overflow用户

发布于 2021-06-05 14:05:09

要补充上述答案,请注意深度/图像_rect_raw主题。很有可能您实际上想要原始图像,您可以从/camera/aligned_depth_to_color/ image _raw中获得该图像。

默认情况下,此主题可能不是活动的,例如,在d435i上,您应该切换align_depth:=true选项:

代码语言:javascript
复制
roslaunch realsense2_camera rs_camera.launch align_depth:=true

有关更多信息,请参见https://github.com/IntelRealSense/realsense-ros#usage-instructions

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62938146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档