#!/usr/bin/env python
#!coding=utf-8
import rospy
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
import cv2
cam0_path = '/home/hltt3838/my_c++/VINS_test/BUAA_robot/cam0/' # 已经建立好的存储cam0 文件的目录
cam1_path = '/home/hltt3838/my_c++/VINS_test/BUAA_robot/cam1/'
def callback(data):
# define picture to_down' coefficient of ratio
scaling_factor = 0.5
global count,bridge
count = count + 1
if count == 1:
count = 0
cv_img = bridge.imgmsg_to_cv2(data, "bgr8")
timestr = "%.6f" % data.header.stamp.to_sec()
#%.6f表示小数点后带有6位,可根据精确度需要修改;
image_name = timestr+ ".jpg" #图像命名:时间戳.jpg
cv2.imwrite(cam0_path + image_name, cv_img) #保存;
cv2.imshow("frame" , cv_img)
cv2.waitKey(3)
else:
pass
def displayWebcam():
rospy.init_node('webcam_display', anonymous=True)
# make a video_object and init the video object
global count,bridge
count = 0
bridge = CvBridge()
rospy.Subscriber('/pylon_camera_node/image_raw', Image, callback)
rospy.spin()
if __name__ == '__main__':
displayWebcam()
关键:你要有主题发布,不然的话怎么订阅,可以用一下方式发布主题:
开启终端1:
rospaly MH_01easy.bag //播放包
或
读取传感器的信息,然后发布topic
开启终端2:
cd my_c++/VINS_test/BUAA_robot
python read_bag.py // read_bag.py 文件名
图片保存的绝对路径
cam0_path = '/home/hltt3838/my_c++/VINS_test/BUAA_robot/cam0/'
cam1_path = '/home/hltt3838/my_c++/VINS_test/BUAA_robot/cam1/'
订阅的话题
'/pylon_camera_node/image_raw'
其他就不用改了,结果如下:
发现一个问题:
上图知,每张图片的间隔时间是0.2s, 等价于相机的频率为5HZ, 有点小了,看看是不是设置触发的原因,后面会进行尝试!