Also ich versuche, ein Programm in ROS mit Python zu erstellen, die Bilder veröffentlicht, aber ich habe zwei Dinge, die ich importieren, die beide "Bild" genannt werden. Wenn ich das Programm ausführe, erhalte ich diese Fehlermeldung.Publisher Subscriber Model Überladen Import Namen
File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/topics.py", line 812, in __init__
super(Publisher, self).__init__(name, data_class, Registration.PUB)
File "/opt/ros/indigo/lib/python2.7/dist-packages/rospy/topics.py", line 138, in __init__
raise ValueError("data_class [%s] is not a class"%data_class)
ValueError: data_class [<module 'PIL.Image' from '/usr/lib/python2.7/dist-packages/PIL/Image.pyc'>] is not a class
Wenn ich die Zeilen importieren PIL Bild und Imagefilter herausnehmen, die Linie zu initialisieren image1, und die Zeile Veröffentlichung image1, das Programm funktioniert gut, weil (glaube ich) zwischen zwei importierte Bildobjekte keine Verwirrung ist. Gibt es eine Möglichkeit, dem Programm mitzuteilen, zwischen den beiden Bildern zu unterscheiden?
#!/usr/bin/env python
import rospy
from sensor_msgs.msg import Image
from PIL import Image, ImageFilter
def camera():
pub = rospy.Publisher('rgb', Image, queue_size=10)
image1 = Image.open('dog.png')
pub.publish(image1)
if __name__ == '__main__':
try:
camera()
except rospy.ROSInterruptException:
pass
Abgesehen davon gibt es mehr Bugs in Ihrem Code: 1) Sie initialisieren nicht einen Ros-Knoten (mit 'rospy.init_node()' und 2) Sie können nicht direkt ein PIL-Bild veröffentlichen, aber Sie müssen es konvertieren zu einer ROS-Bildnachricht. – luator