publish_img_folder.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 import roslib; roslib.load_manifest('iri_stereo_visual_odometry')
00003 import rospy
00004 import os
00005 import sys
00006 import cv
00007 import rosbag
00008 from cv import *
00009 from sensor_msgs.msg import Image
00010 from std_msgs.msg import String
00011 from cv_bridge import CvBridge, CvBridgeError
00012 
00013 # Definir el node
00014 def spit():
00015 
00016   rospy.loginfo(" Publish Images from Folder ")
00017   rospy.loginfo(" ")
00018 
00019   # Agafar parametre folder si fa falta
00020   # Aqui s'ha de canviar "user" pel nom d'usuari que toca
00021   folder = "/home/user/iri-lab/labrobotica/algorithms/stereo_visual_odometry/trunk/images"
00022   folder = "/home/gmoreno/iri-lab/ros/iri-ros-pkg/iri_odometry_publisher/iri_stereo_visual_odometry/data"
00023   
00024   if(folder[6:10]=="user"):
00025     rospy.loginfo(" How To: 1.   donar permisos: chmod +x publish_img_folder.py ")
00026     rospy.loginfo("         2.a. executar: ./publish_img_folder.py (canviar user i path a linia 21)")
00027     rospy.loginfo(" ")
00028 
00029   else:
00030   
00031     # crear publishers per a left i per a right
00032     publeft = rospy.Publisher('stereo/left/image', Image)
00033     pubright = rospy.Publisher('stereo/right/image', Image)
00034 
00035     # iniciar el node
00036     rospy.init_node('spit')
00037 
00038     # crear objecte cv bridge
00039     cvb = CvBridge()
00040 
00041     # crear una imatge per escalfar els publishers
00042     font = cv.InitFont(cv.CV_FONT_HERSHEY_COMPLEX,3, 3, 0.0, 5, 8)
00043     warming_image = cv.CreateImage((1280,960), cv.IPL_DEPTH_8U, 1)
00044     cv.PutText(warming_image,"Warming", (600,450),font, 255)
00045     ros_image = cvb.cv_to_imgmsg(warming_image, encoding="passthrough")
00046     ros_image.header.stamp = rospy.Time.now()
00047     publeft.publish(ros_image)
00048     pubright.publish(ros_image)
00049     rospy.loginfo("  Warm images publicades")
00050     rospy.loginfo(" ")
00051     rospy.loginfo(" ---------- ")
00052     rospy.loginfo(" ")
00053     
00054     # llegir carpeta contenidora d'imatges
00055     for root, dirs, files in os.walk(folder):
00056       
00057       # ordenar els arxius per ordre alfabetic
00058       files.sort()
00059       
00060       # tractar cada imatge
00061       for name in files: 
00062         
00063         # Extreure Nom      
00064         filename = os.path.join(root, name)
00065         camera = int(filename[len(filename)-5])
00066       
00067         try:
00068         
00069           # Carregar Imatge
00070           cv_image = LoadImage (filename, 1)
00071           camera_maco = "left" if camera==1 else "right"
00072           rospy.loginfo("  Imatge %s carregada: ...%s",camera_maco,filename[-35:])
00073         
00074           # Mostrar imatge
00075           # NamedWindow ('img'); ShowImage ('img', cv_image); WaitKey ()
00076         
00077           # Convertir imatge a ROS msg
00078           ros_image = cvb.cv_to_imgmsg(cv_image, encoding="passthrough")
00079           rospy.loginfo("    1 mida: %d %d",ros_image.width,ros_image.height)
00080           ros_image.header.stamp = rospy.Time.now()
00081           ros_image.header.frame_id = "/stereo/left" if camera==1 else "/stereo/right"
00082           rospy.loginfo("    2 header escrit, frame_id: %s stamp: %s",ros_image.header.frame_id,ros_image.header.stamp)
00083           
00084           # Publicar imatge
00085           if(camera==1):
00086             publeft.publish(ros_image)
00087           else:
00088             pubright.publish(ros_image)
00089           rospy.loginfo("    3 imatge publicada")
00090           rospy.loginfo(" ")
00091 
00092         except:
00093           # Exception
00094           rospy.loginfo(" FAIL")
00095         
00096         # delay
00097         if(camera!=1):
00098           rospy.sleep(0.2)  
00099           rospy.loginfo(" ---------- ")
00100           rospy.loginfo(" ")
00101 
00102     rospy.loginfo(" THE END")
00103 
00104 
00105 if __name__ == '__main__':
00106     try:
00107         spit()
00108     except rospy.ROSInterruptException:
00109         pass
00110 
00111 


iri_stereo_visual_odometry
Author(s): gmoreno
autogenerated on Fri Dec 6 2013 23:59:48