#!/usr/bin/env python
#coding:utf-8
import rospy
import sys
sys.path.append('.')
import cv2
import os
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
def pubVideo():
rospy.init_node('pubVideo',anonymous = True)
pub = rospy.Publisher('/camera/rgb/image_raw', Image, queue_size = 10)
rate = rospy.Rate(10)
path = "your_video_path"
cap = cv2.VideoCapture(path)
scaling_factor = 0.5
bridge = CvBridge()
if not cap.isOpened():
sys.stdout.write("vedio is not available !")
return -1
count = 0
while not rospy.is_shutdown():
ret, frame = cap.read()
if ret:
count = count + 1
else:
rospy.loginfo("Capturing image failed.")
if count == 2:
count = 0
frame = cv2.resize(frame,None,fx=scaling_factor,fy=scaling_factor,interpolation=cv2.INTER_AREA)
msg = bridge.cv2_to_imgmsg(frame, encoding="bgr8")
pub.publish(msg)
print('** publishing webcam_frame ***')
rate.sleep()
if __name__ == '__main__':
try:
pubVideo()
except rospy.ROSInterruptException:
pass
这个是发布视频的
#!/usr/bin/env python
#coding:utf-8
import rospy
import sys
sys.path.append('.')
import cv2
import os
import numpy as np
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
def pubImage():
rospy.init_node('pubLocalImage1',anonymous = True)
pub = rospy.Publisher('/camera/rgb/image_raw', Image, queue_size = 10)
rate = rospy.Rate(10)
bridge = CvBridge()
gt_imdb = []
#path是我存放图片的文件夹
path = "yourpath"
for item in os.listdir(path):
gt_imdb.append(os.path.join(path,item))
while not rospy.is_shutdown():
for imagepath in gt_imdb:
image = cv2.imread(imagepath)
image = cv2.resize(image,(1920,1200))
pub.publish(bridge.cv2_to_imgmsg(image,"bgr8"))
#cv2.imshow("lala",image)
cv2.waitKey(5)
rate.sleep()
if __name__ == '__main__':
try:
pubImage()
except rospy.ROSInterruptException:
pass
这个是发布图片的,path填写你的图片文件夹