Итак, я пытаюсь создать программу в ROS, используя Python, который публикует изображения, но у меня есть две вещи, которые я импортирую, которые называются «Image». Когда я запускаю программу, я получаю это сообщение об ошибке.Модель подписчика подписчика перегруженных имен
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
Когда я вынимаю линии импортеров PIL изображения и ImageFilter, линия инициализации image1, а линия публикации image1, программа прекрасно работает, потому что (я думаю), что нет никакой путаницы между двумя импортированными объектами изображения. Есть ли способ рассказать программе о различии между двумя изображениями?
#!/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
Кроме того, в вашем коде есть больше ошибок: 1) вы не инициализируете узел ros (используя 'rospy.init_node()' и 2) вы не можете напрямую публиковать изображение PIL, но вы должны его преобразовать к сообщению изображения ROS. – luator