数据集录制:
使用的相机是双目深度版,首先启动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"