ROS D435I识别目标并获取深度数据

这篇具有很好参考价值的文章主要介绍了ROS D435I识别目标并获取深度数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ROS D435I识别目标并获取深度数据

使用D435I相机,并基于ros获取到彩色图像和匹配后的深度数据,通过OPENCV对彩色图像进行目标识别,得到目标所在的像素范围,随后得到深度数据
重点在于:转换ros图像数据到opencv格式,得到目标像素点的实际深度值

  1. d435i启动与修改
roslaunch realsense2_camera rs_camera_vins.launch 

使用上述指令启动d435i,可以在里面进行分辨率修改和匹配。其中color_widthcolor_height是彩色图像的分辨率,可以选择720480、1280720和1920*1080。修改align_depth进行深度匹配,得到匹配后的深度图像。

rqt_image_view

使用上述指令查看图像,可以看到需要分辨率的彩色图像和深得图像。其中深度图像可以看出,距离很近或者很远的时候,深度数据是黑色的。彩色图像是bgr8的格式,深度图像是16UC1格式,可以通过Image.encoding获得。

rostopic echo /camera/aligned_depth_to_color/camera_info

使用上述指令,可以查看图像的参数,包括分辨率和内参。

  1. ros图像转转为opencv进行处理
import rospy
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError

rospy.init_node('vins_img')
rospy.Subscriber("/camera/color/image_raw",                                         Image, vins_img_callback,queue_size=1)
bridge = CvBridge()
image_pub = rospy.Publisher("cv_bridge_image", Image, queue_size=1)

def vins_img_callback(data = Image):
    try:
        cv_img = bridge.imgmsg_to_cv2(data, "bgr8")
    except CvBridgeError as e:
        print(e)
        
final_img = ……

    try:
        image_pub.publish(bridge.cv2_to_imgmsg(final_img, "bgr8"))
    except CvBridgeError as e:
        print(e)

    pass

while not rospy.is_shutdown():
    rospy.spin()

使用上述代码,可以将获取的图像转为三通道bgr的opencv图像,可以直接用opencv进行处理,(但是我出现了无法cv2.imshow),发布后的图像可以用rqt看到。

  1. 获取深度实际值
    前面说到深度值是的格式是16UC1,转化成opencv后,直接通过数组得到对应的值即可,单位是mm。
def vins_dep_callback(data = Image):
    global depth_img
    try:
        depth_img = bridge.imgmsg_to_cv2(data, "16UC1")
    except CvBridgeError as e:
        print(e)

上述代码将深度图形转换为opencv的格式,并且是16UC1的编码方式。读取到他的shape分别为720和1280,通过print(depth_img[depth_cy, depth_cx])即可获得深度值。文章来源地址https://www.toymoban.com/news/detail-498548.html

  1. 发布自己的topic,进行ros之间的传输
    自己造一个topic的数据结构太麻烦了,还是使用现有的,使用from geometry_msgs.msg import Point,这个有x y z的数据,正好用于表示。
    有两种方案,xy表示图像中的目标像素坐标或者转换之后的pitch和yaw偏执,z表示深度数据;或者左前上的坐标顺序,x轴表示yaw的偏执,z表示pitch的偏执(之后会转换成高度的偏执),y表示深度数据。
    在此使用第二个方案
from geometry_msgs.msg import Point
obj_pub = rospy.Publisher("obj_point",  Point, queue_size=1 )

    obj_dat  = Point()
    obj_dat.x = det_yaw
    obj_dat.y = det_pitch
    obj_dat.z = float(depth_img[depth_cy, depth_cx])/1000
    obj_pub.publish(obj_dat)

到了这里,关于ROS D435I识别目标并获取深度数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【深度相机D435i】Windows+Ubuntu下调用D435i利用Python读取、保存RGB、Depth图片

    最近组里面的项目需要用到D435i深度相机采集深度图片,所以记录一下在Windows+Ubuntu的环境下使用D435i深度相机的流程,以及如何利用python读取、保存常见的RGB、Depth图片。 D435i 在小巧外形中采用英特尔模块和视觉处理器,是一个功能强大的一体产品,可与可定制软件配合使用

    2024年02月02日
    浏览(27)
  • ORB_SLAM3 ROS编译及使用D435I运行

    本文介绍ORB_SLAM3编译、运行中遇到问题,尤其涉及到ORB_SLAM3 ROS编译遇到的问题。最后通过使用D435I完成在室内环境下运行。 本文运行环境在Ubuntu20.04 + ROS noetic。 一、ORB_SLAM3 依赖安装 ORB_SLAM3 依赖的安装,有同学喜欢上来就baidu,按照别人介绍的安装,这样做大多数时候会出现

    2024年02月03日
    浏览(34)
  • Realsense D435i Yolov5目标检测实时获得目标三维位置信息

    - Colorimage: - Colorimage and depthimage: 1.一个可以运行YOLOv5的python环境 2.一个realsense相机和pyrealsense2库 在下面两个环境中测试成功 win10 python 3.8 Pytorch 1.10.2+gpu CUDA 11.3 NVIDIA GeForce MX150 ubuntu16.04 python 3.6 Pytorch 1.7.1+cpu 修改模型配置文件,以yolov5s为例。 如果使用自己训练的模型,需要进

    2024年02月04日
    浏览(42)
  • Ubuntu 18.04安装D435i 相机驱动及Ros1 Wrapper

    1.安装前注意 librealsense SDK相当于相机的驱动,SR300和ZR300的支持驱动是librealsense SDK 1.0,而D435i是librealsense SDK 2.0 **安装前一定要注意librealsense,realsense-ros(即Ros Wrapper),D435i相机固件版本三者之间的版本对应关系。**ros1环境只支持librealsense2.50.0之前的版本,ros2环境要下载librealse

    2024年02月22日
    浏览(36)
  • python实现d435i深度相机测量两点之间的距离

    本文介绍python方法实现intel公司realsense系列d435i深度相机测量彩色图像上两点之间的距离。 原理很简单,就是将相机获得的彩色图像流与深度流对齐,这样彩色图像上的每个像素就会对应一个深度值,作为z坐标,然后通过相机内参获得该像素的x坐标和y坐标。我们获得的x、

    2024年02月16日
    浏览(26)
  • 【完整教程】在win10平台下使用d435i深度相机读取数据并保存到本地,以便进行后续3D点云处理

    进入网址:RealSense SDK 2.0 直接拉到网站最下端,在Asset下可以看到很多exe可执行软件,由于我的电脑是win10,所以选择第三个。说句题外话,鄙人曾经考英语六级时记得Asset专门指不动资产,没错,就是房子! 下载完成后文件夹内有如下图所示软件,直接安装即可。 安装完成

    2024年02月02日
    浏览(73)
  • 项目设计:YOLOv5目标检测+机构光相机(intel d455和d435i)测距

    1.1  Intel D455 Intel D455 是一款基于结构光(Structured Light)技术的深度相机。 与ToF相机不同,结构光相机使用另一种方法来获取物体的深度信息。它通过投射可视光谱中的红外结构光图案,然后从被拍摄物体表面反射回来的图案重建出其三维形状和深度信息。 Intel D455 深度相机

    2024年02月08日
    浏览(36)
  • 使用D435i相机录制TUM格式的数据集

    本文写于2023年3月14日。 D435i相机的rgb图像与depth图像的像素没有对齐,在此记录一下如何像素对齐 Ubuntu18.04 + ROS melodic 这一步需要使用 InterRealSenseD435i SDK2 ,可以参考此链接安装。 打开 Intel RealSense Viewer 。设置 Depth Stream 以及 Color Stream 的图像分辨率为 640 × 480 ,设置采集帧率

    2024年02月09日
    浏览(33)
  • realsense D435i 实现外部时钟触发硬件同步多相机数据采集

    最近有一个调试D435i相机的工作,需要使得三个相机能够完成硬件触发的同步,具体来说,就是有一个固定频率的外部脉冲信号,使得三个相机能够根据外部脉冲信号的硬件触发完成双目图片、深度图片、彩色图片、IMU数据的实时响应采集,因为外部脉冲信号是通过一个精确

    2024年01月16日
    浏览(32)
  • ubuntu18.04安装Realsense D435i相机SDK及realsense-ros记录,为后期运行yolo v5作准备

    写在前面 :一定要注意各个版本之间的匹配问题,否则会报各种错误。 例如ROS版本和librealsense SDK版本之间的对应关系,以及realsense-ros(Wrapper)与librealsense SDK之间的对应关系 。 系统:ubuntu18.04 ros: melodic 附上Intel® RealSense github网站: https://github.com/IntelRealSense 以及安装教程

    2024年02月05日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包