我目前正在尝试编写一个 ROS 发布者/订阅者设置,该设置传递由 PIL 打开的图像二进制文件。由于操作限制,我希望不必使用 OpenCV,我想知道是否有办法这样做。这是我当前的代码:
#!/usr/bin/env python
import rospy
from PIL import Image
from sensor_msgs.msg import Image as sensorImage
from rospy.numpy_msg import numpy_msg
import numpy
def talker():
pub = rospy.Publisher('image_stream', numpy_msg(sensorImage), queue_size=10)
rospy.init_node('image_publisher', anonymous=False)
rate = rospy.Rate(0.5)
while not rospy.is_shutdown():
im = numpy.array(Image.open('test.jpg'))
pub.publish(im)
rate.sleep()
if __name__ == '__main__'
try:
talker()
except ROSInterruptException:
pass
在 pub.publish(im) 尝试时抛出:
TypeError: Invalid number of arguments, args should be ['header', 'height', 'width', 'encoding', 'is_bigendian', 'step', 'data'] args are (array([[[***array data here***]]], dtype=uint8),)
如何将图像转换为正确的形式,或者是否有支持仅通过 ROS 连接发送原始二进制文件的转换方法/不同的消息类型?
互换的青春
慕森卡