- 环境
- 代码
体验下来最麻烦的就是环境配置,因为我默认的是python 3.9, 发现运行之后没有报错,但是也没有生成任何结果。
然后我就开始怀疑是我ros的问题?因为好像说ros只能兼容python2,我就先尝试切换到python2,但是发现opencv又装不上(这个应该是我自己的问题,因为我看到有人使用python2安装了opencv能处理处理出结果的)
后来看到opencv2只支持到python3.6(但是我不知道为啥,我在3.9也装上了opencv2),就切到了3.6,然后又重新安装了一堆库就可以了。
python3.6
opencv_python4.5.5.64
py3rosmsgs1.18.1
#coding:utf-8
import roslib;
import rosbag
import rospy
import cv2
from sensor_msgs.msg import Image
from cv_bridge import CvBridge
from cv_bridge import CvBridgeError
path='/home/sczone/raw_data/0214_new/robosense/2022-02-14-10-50-50/back_right_camera/' #存放图片的位置
class ImageCreator():
def __init__(self):
self.bridge = CvBridge()
top_lst = []
with rosbag.Bag('/home/sczone/raw_data/0214_new/robosense/2022-02-14-10-50-50/2022-02-14-10-50-50.bag', 'r') as bag: #要读取的bag文件;
for topic,msg,t in bag.read_messages():
if topic == "/rs/back_right_camera/compressed": # 图片topic的名字
cv_image = self.bridge.compressed_imgmsg_to_cv2(msg) # 因为topic是compressed格式的,所以用compressed_imgmsg_to_cv2
timestr = "%.6f" % msg.header.stamp.to_sec() # 时间戳格式转换
image_name = timestr + ".png"
# cv2.imwrite(path + image_name, cv_image) # 保存;
if __name__ == '__main__':
try:
image_creator = ImageCreator()
except rospy.ROSInterruptException:
pass



