【问题标题】:How to reduce frame rate of an opencv image imported from ros如何降低从ros导入的opencv图像的帧速率
【发布时间】:2013-07-30 21:39:12
【问题描述】:

我是 Opencv 和 ROS 的新手。我有以下代码:

void visual_image_cb(const sensor_msg::ImageConstPtr& msg)
{
    ctr++;
    cv_bridge::CvImagePtr cv_ptr;
    try
    {
        cv_ptr=cv_bridge::toCvCopy(msg, enc::BGR8);
    }
    catch (cv_bridge:Exception& e)
    {
        ROS_ERROr("cv_bridge exception: %s", e.what());
        return;
    }
...

如何降低cv_ptr的帧率?我尝试使用cvQueryFrame,但这种方法失败了。

是否可以将CvCaptureIplImage 一起使用(即如果我使用IplImage ipl_img= cv_ptr->image 并在之后尝试降低帧速率)?

【问题讨论】:

    标签: opencv frame rate ros


    【解决方案1】:

    您使用的回调只是在发布者发布消息时通过 ROS 接收消息,因此从这个角度来看,实际上无法降低帧速率。您可以选择丢弃每个帧数,但这可能不是您想要的,因为这样您就会丢失数据。如果这您正在寻找的,只需在函数中添加某种计数器,并且仅在计数器等于某个值时才获取图像。

    解决方案是降低发布者中的帧速率。在不知道发布内容的情况下很难给出执行此操作的说明。但通常这是一些相机驱动程序(即 OpenNI 或 Freenect),在这种情况下,您应该使用上面的丢帧方法。如果消息是从 ROS bag 文件发布的,只需在 rosbag 命令末尾添加 -r 0.5 即可将发布速率降低到记录时的一半。

    -蒂姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多