2016-11-06 4 views
0

イメージをパブリッシュするPythonを使用してROSでプログラムを作成しようとしていますが、インポートする2つのものがあります。プログラムを実行すると、このエラーメッセージが表示されます。パブリッシャーサブスクライバーモデルオーバーロードされたインポート名

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、イメージ1を初期化ラインをインポートする行を取り出して、画像1を公開行すると2つの輸入Imageオブジェクトの間に混乱がありません(と思う)ので、プログラムが正常に動作します。 2つのイメージを区別するようプログラムに指示する方法はありますか?

#!/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

あなたは、インポート時に、物事の名前を変更することができます

from sensor_msgs.msg import Image as ImageMsg 

この方法では、名前の衝突を避けることができます。

+0

あなたのコードにはバグがたくさんあります:1)rosノードを初期化せず( 'rospy.init_node()'を使ってください)、2)PILイメージを直接公開することはできませんが、 ROS画像メッセージに変換する。 – luator

関連する問題