ROS2通过WebSocket从USB摄像头流式传输视频图像

bd1hkmkf  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(381)

新的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中工作,主题和消息类型与程序中相同。我不确定是什么导致了这个错误的流。
先谢了。

pod7payv

pod7payv1#

我实际上是用另一种方式做到这一点的。我用realsense2用python创建了一个到相机的流。然后用opencv将流中的每一帧转换为二进制类型。之后,我将二进制图像(flask的函数)生成到我用flask制作的webapp中。
realsense2库是必需的,因为我使用的是英特尔realsense T265摄像头。您可以使用任何其他库来创建流。

相关问题