Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python3 | |
| import roslib | |
| #roslib.load_manifest('my_package') | |
| 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') | |
| # rospy.loginfo(f"Talker - params: use_camera={use_camera}, input_video_file={input_video_file}") | |
| # rospy.loginfo("Talker: Trying to open a video stream") | |
| 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) # 30hz | |
| 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 | |