小觅相机录制rosbag数据集

数据集录制:
使用的相机是双目深度版,首先启动launch文件

roslaunch mynteye_wrapper_d display.launch

然后对图片和imu数据录制,考虑到RGB图像会导致rosbag文件过大,因此对灰度图进行录制

rosbag record /mynteye/left/image_mono /mynteye/right/image_mono /mynteye/imu/data_raw

相机默认帧率较高,导致bag文件过大,可设置相机帧率为10hz

rosrun topic_tools throttle messages /mynteye/left/image_raw 10 /left
rosrun topic_tools throttle messages /mynteye/right/image_raw 10 /right

该指令为ROS指令。作用是订阅了/mynteye/left/image_mono,然后将采样频率降到10Hz,并降低采样频率后的图像数据发布新的名为/left的topic。

最后,使用rosbag录制感兴趣的三个话题

rosbag record /left /right /mynteye/imu/data_raw

rosbag中提取图片:
新建 extract_images.py

# coding:utf-8
#!/usr/bin/python

# Extract images from a bag file.

import roslib   #roslib.load_manifest(PKG)
import rosbag
import rospy
import decimal
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError
  

left_path = '/home/wb/MYNT-EYE-S-SDK/dataset/left/'   # 左目图像的路径,需提前手动创建,也可以使用程序自动创建
right_path = '/home/wb/MYNT-EYE-S-SDK/dataset/right/'
  
class ImageCreator():
    def __init__(self):
        self.bridge = CvBridge()
        with rosbag.Bag('/home/wb/MYNT-EYE-S-SDK/2020-08-05-23-05-50.bag', 'r') as bag:  # 读取bag文件,注意设置正确的bag文件路径
            for topic,msg,t in bag.read_messages():
                if topic == "/left": # 左目图像的topic
                        try:
                            cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                        except CvBridgeError as e:
                            print e
                        # %.6f表示小数点后带有6位,可根据精确度需要修改
                        timestr = "%.6f" % msg.header.stamp.to_sec()
                        image_name = timestr + ".png" #图像命名:时间戳.png
                        cv2.imwrite(left_path + image_name, cv_image)  # 保存图像
                elif topic == "/right": # 右目图像的topic
                        try:
                            cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8")
                        except CvBridgeError as e:
                            print e
                        # %.6f表示小数点后带有6位,可根据精确度需要修改
                        timestr = "%.6f" % msg.header.stamp.to_sec()
                        image_name = timestr + ".png" #图像命名:时间戳.png
                        cv2.imwrite(right_path + image_name, cv_image)  # 保存图像
  
if __name__ == '__main__': 
    try:
        image_creator = ImageCreator()
    except rospy.ROSInterruptException:
        pass

对于小觅相机的白色斑点,是IR模式导致的,可进行关闭,在MYNT-EYE-D-SDK/wrappers/ros/src/mynteye_wrapper_d/launch/mynteye.launch中可以关闭,修改如下:

<!-- IR intensity -->
  <arg name="ir_intensity" default="4" />

default="4"修改为default="0"

猜你喜欢

转载自blog.csdn.net/qq_33898609/article/details/109659539