| |
|
|
|
|
| import roslib |
| |
| import sys |
| import rospy |
| import cv2 |
| from std_msgs.msg import String |
| from sensor_msgs.msg import Image |
| from cv_bridge import CvBridge, CvBridgeError |
|
|
|
|
| def talker(): |
| rospy.init_node('talker', anonymous=True) |
| |
| use_camera = rospy.get_param('~use_camera', False) |
| input_video_file = rospy.get_param('~input_video_file','test.mp4') |
| |
|
|
| |
| if use_camera == True: |
| cap = cv2.VideoCapture(0) |
| else: |
| cap = cv2.VideoCapture(input_video_file) |
|
|
| pub = rospy.Publisher('image_topic', Image, queue_size=1) |
| rate = rospy.Rate(30) |
| bridge = CvBridge() |
|
|
| while not rospy.is_shutdown(): |
| ret, cv_image = cap.read() |
| if ret==False: |
| print("Talker: Video is over") |
| rospy.loginfo("Video is over") |
| return |
|
|
| try: |
| image = bridge.cv2_to_imgmsg(cv_image, "bgr8") |
| except CvBridgeError as e: |
| rospy.logerr("Talker: cv2image conversion failed: ", e) |
| print(e) |
| continue |
|
|
| rospy.loginfo("Talker: Publishing frame") |
| pub.publish(image) |
| rate.sleep() |
|
|
| if __name__ == '__main__': |
| try: |
| talker() |
| except rospy.ROSInterruptException: |
| pass |
|
|