Go to the documentation of this file.00001
00002
00003 import roslib
00004 roslib.load_manifest('pi_head_tracking_tutorial')
00005 import sys
00006 import rospy
00007 import cv
00008 from std_msgs.msg import String
00009 from sensor_msgs.msg import Image
00010 from cv_bridge import CvBridge, CvBridgeError
00011
00012 class test_vision_node:
00013
00014 def __init__(self):
00015 rospy.init_node('test_vision_node')
00016
00017 """ Give the OpenCV display window a name. """
00018 self.cv_window_name = "OpenCV Image"
00019
00020 """ Create the window and make it re-sizeable (second parameter = 0) """
00021 cv.NamedWindow(self.cv_window_name, 0)
00022
00023 """ Create the cv_bridge object """
00024 self.bridge = CvBridge()
00025
00026 """ Subscribe to the raw camera image topic """
00027 self.image_sub = rospy.Subscriber("/camera/image_raw", Image, self.callback)
00028
00029 def callback(self, data):
00030 try:
00031 """ Convert the raw image to OpenCV format """
00032 cv_image = self.bridge.imgmsg_to_cv(data, "bgr8")
00033 except CvBridgeError, e:
00034 print e
00035
00036
00037 """ Get the width and height of the image """
00038 (width, height) = cv.GetSize(cv_image)
00039
00040 """ Overlay some text onto the image display """
00041 text_font = cv.InitFont(cv.CV_FONT_HERSHEY_DUPLEX, 2, 2)
00042 cv.PutText(cv_image, "OpenCV Image", (50, height / 2), text_font, cv.RGB(255, 255, 0))
00043
00044 """ Refresh the image on the screen """
00045 cv.ShowImage(self.cv_window_name, cv_image)
00046 cv.WaitKey(3)
00047
00048 def main(args):
00049 vn = test_vision_node()
00050 try:
00051 rospy.spin()
00052 except KeyboardInterrupt:
00053 print "Shutting down vison node."
00054 cv.DestroyAllWindows()
00055
00056 if __name__ == '__main__':
00057 main(sys.argv)
00058