更新
2024.7.12 新博客已经解决python3下cv_bridge报错:
ubuntu18.04+ROS-melodic配置支持python3的cv_bridge-优快云博客
摘要
使用realsense viewer进行bag文件record。项目使用的python3,但在ros版本下,进行bag文件读取报错,查阅相关资料,发现是ros不兼容python3。尝试网上多种方法,无法解决。更换python2.7,解决。
记录一下,供自己和大家学习。
版本:子系统ubuntu18.04、ros melodic、IDE:pycharm
读取bag文件代码
import roslib
import rosbag
import rospy
import cv2
import os
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
#
rgb_path = './rgb/' # absolute path of extracted rgb images
depth_path = './depth/' # absolute path of extracted depth images
if not os.path.exists(rgb_path):
os.makedirs(rgb_path)
if not os.path.exists(depth_path):
os.makedirs(depth_path)
bridge = CvBridge()
bag = rosbag.Bag('test.bag', 'r') # path for the bag
for topic, msg, t in bag.read_messages():
if topic == "/device_0/sensor_0/Depth_0/image/data":
try:
cv_image = bridge.imgmsg_to_cv2(msg, "mono16") # Z16对应 mono16
timestr = "%.8f" % msg.header.stamp.to_sec()
image_name = timestr + '.png'
cv2.imwrite(depth_path + image_name, cv_image)
print(depth_path + image_name)
except CvBridgeError as e:
print(e)
if topic == "/device_0/sensor_1/Color_0/image/d