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 | |