新的ros 2和尝试流图像从USB相机到一个简单的网站在localhost。相机的工作,我是able添加到rviz 2和看到视频灰度。
我的方法是:
1-为这个摄像头创建一个主题。我使用命令ros2 launch realsense2_camera rs_launch.py
,视频的主题是/camera/fisheye1/image_raw
。当我检查这个主题的类型时,我得到sensor_msgs/msg/Image
2-我已经建立了一个rosbridge_WebSocket的工作,我可以发送消息到我的简单html网站。
3-我想检索这个主题的数据,并将其转换为一个图像,我可以流。为此,我做了下一个代码来捕捉java中的消息:
var imageTopic = new ROSLIB.Topic({
ros: ros, // Your ROS connection
name: '/camera/fisheye1/image_raw', // The ROS topic you want to subscribe to
messageType: 'sensor_msgs/msg/Image' // The message type for the topic
});
// and the subscriber
imageTopic.subscribe(function(message) {
//code to convert from message's data in mono8 to image
});
字符串
我知道我的图像是mono 8编码的,当我运行ros2 topic echo /camera/fisheye1/image_raw --no-arr
时,我也会仔细检查,得到如下结果:
header:
stamp:
sec: 1698430962
nanosec: 551425280
frame_id: camera_fisheye1_optical_frame
height: 800
width: 848
encoding: mono8 // <----
is_bigendian: 0
step: 848
data: '<sequence type: uint8, length: 678400>'
型
这表示编码。
但是当我在JavaScript订阅器中收到消息并检查里面的内容时,数据是字母数字而不是像素值。我知道图像流在rviz 2中工作,主题和消息类型与程序中相同。我不确定是什么导致了这个错误的流。
先谢了。
1条答案
按热度按时间pod7payv1#
我实际上是用另一种方式做到这一点的。我用realsense2用python创建了一个到相机的流。然后用opencv将流中的每一帧转换为二进制类型。之后,我将二进制图像(flask的函数)生成到我用flask制作的webapp中。
realsense2库是必需的,因为我使用的是英特尔realsense T265摄像头。您可以使用任何其他库来创建流。