gpt4 book ai didi

python - 在 ROS 中获取 RealSense 深度框架

转载 作者:行者123 更新时间:2023-12-05 06:14:22 26 4
gpt4 key购买 nike

我在 Gazebo 环境中有一架无人机,上面装有 RealSense d435 摄像头。我的计划是使用YOLO找到一个感兴趣的物体的中心,然后从深度图像中找到那个点的深度。我听说深度相机输出的图像中的深度值是用 RGB 值编码的。当进一步在线查找时,我发现有一个 pyrealsense2 库具有满足我需要的一切功能。

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

最佳答案

是的,您可以在 ROS 订阅者的帮助下执行此操作,如下所示(大部分代码取自 here):

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,您可以按照以下说明操作:

 sudo apt-get install ros-(ROS version name)-cv-bridge

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

更多信息:http://wiki.ros.org/cv_bridge

关于python - 在 ROS 中获取 RealSense 深度框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62938146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com