-
-
Save foemre/08df19cc695aa0ead20500a1c6cd8d82 to your computer and use it in GitHub Desktop.
ROS Image Subscriber / JPEG Saver
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/python | |
# Copyright (c) 2015, Rethink Robotics, Inc. | |
# Edited to be used with Husarion's ROSbot | |
# by F.O.Emre Erdem | |
# Using this CvBridge Tutorial for converting | |
# ROS images to OpenCV2 images | |
# http://wiki.ros.org/cv_bridge/Tutorials/ConvertingBetweenROSImagesAndOpenCVImagesPython | |
# Using this OpenCV2 tutorial for saving Images: | |
# http://opencv-python-tutroals.readthedocs.org/en/latest/py_tutorials/py_gui/py_image_display/py_image_display.html | |
# rospy for the subscriber | |
import rospy | |
# ROS Image message | |
from sensor_msgs.msg import Image | |
# ROS Image message -> OpenCV2 image converter | |
from cv_bridge import CvBridge, CvBridgeError | |
# OpenCV2 for saving an image | |
import cv2 | |
# Instantiate CvBridge | |
bridge = CvBridge() | |
def image_callback(msg): | |
print("Received an image") | |
try: | |
# Convert your ROS Image message to OpenCV2 | |
cv2_img = bridge.imgmsg_to_cv2(msg, "bgr8") | |
rospy.sleep(1) # waits 1 sec before looping with spin() at line 43 | |
except CvBridgeError, e: | |
print(e) | |
else: | |
# Save your OpenCV2 image as a jpeg | |
cv2.imwrite('camera_image.jpeg', cv2_img) | |
def main(): | |
rospy.init_node('image_listener') | |
# Define your image topic | |
image_topic = "/camera/rgb/image_raw" # ROSbot camera topic | |
# Set up your subscriber and define its callback | |
rospy.Subscriber(image_topic, Image, image_callback) | |
# Spin until ctrl + c | |
rospy.spin() | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment