ROS图像主题帧率极高

2024-09-27 07:27:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过rosapi用opencv处理VREP视觉传感器的输出。我确实设法设置了场景并运行了脚本,但问题是,即使没有实际处理,我也能获得4-5帧/秒的速度(目前我只是直接将图像推送到输出)。在

这个问题似乎并不取决于图像分辨率,因为1024*512和128*128捕获的结果完全相同。在

这也不是阻塞调用的问题,虽然我发布的是单线程代码,但我确实有相当复杂的多线程处理管道,在实际的摄像机(约50 fps)下表现相当好。在

在VREP这边的Lua脚本似乎也不成问题,因为我尝试过使用VREP提供的视频重译示例,它们似乎达到了相当令人满意的fps。在

因此,图像流似乎是一个瓶颈。在

以下是我的示例脚本:

# coding=utf-8

import rclpy
import rclpy.node as node
import cv2
import numpy as np
import sensor_msgs.msg as msg

import third_party.ros.ros as ros

class TestDisplayNode(node.Node):
    def __init__(self):
        super().__init__('IProc_TestDisplayNode')
        self.__window_name = "img"
        self.sub = self.create_subscription(msg.Image, 'Vision_sensor', self.msg_callback)

    def msg_callback(self, m : msg.Image):
        np_img = np.reshape(m.data, (m.height, m.width, 3)).astype(np.uint8)
        self.display(np_img)

    def display(self, img : np.ndarray):
        cv2.imshow(self.__window_name, cv2.cvtColor(img, cv2.COLOR_RGB2BGR))
        cv2.waitKey(1)

def main():
    ros_core = Ros2CoreWrapper()

    node = TestDisplayNode()

    rclpy.spin(node)

    node.destroy_node()
    rclpy.shutdown()

if __name__ == "__main__":
    main()

我还必须提到,我用ros bridge运行它,因为我需要用python3进行处理,而python3只受ROS2支持,而VREP似乎只适用于ROS1(尽管我刚刚开始使用这些系统,所以我对这种情况不太有信心)。在


Tags: 图像importself脚本nodeimgdefas

热门问题