gpt4 book ai didi

opencv - ROS Image subscriber - 不出现弹出窗口

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:51 25 4
gpt4 key购买 nike

我正在关注官方 ROS 页面上的图像订阅教程。当我运行 my_subscriber 时,没有弹出窗口出现。我输入 -

rosrun image_transport_tutorial my_subscriber

输出是-

init done
opengl support available

然后什么也没有发生。 (即使输出“init done”也是无法解释的,因为在 my_subscriber.cpp 中没有输出行)

我正在学习本教程 - ROS tutorial

我已经在不同的终端中运行了 roscore 和 rosrun image_transport_tutorial my_publisher pathtofile。我通过运行命令检查发布者是否正在发布

rostopic list -v

my_subscriber 文件包含以下内容 -

#include <ros/ros.h>
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h>
#include <stdio.h>
void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
try
{
cv::imshow("view", cv_bridge::toCvShare(msg, "bgr8")->image);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
}
}

int main(int argc, char **argv)
{
std::cout<<"kapil";
ros::init(argc, argv, "image_listener");
ros::NodeHandle nh;
cv::namedWindow("view");
cv::startWindowThread();
image_transport::ImageTransport it(nh);
image_transport::Subscriber sub = it.subscribe("camera/image", 1, imageCallback);
ros::spin();
cv::destroyWindow("view");
}

已解决:我按照其中一个答案的建议在 try block 中添加了 waitKey 函数。

cv::waitKey(30);

最佳答案

根据对this answer的评论,使用 cv::startWindowThread() 并不总是有效。也许这就是您遇到的问题。

尝试在 cv::imshow 之后添加 cv::waitKey(10)。这将等待一些按键按下 10 毫秒,让窗口有时间显示图像。(在我看来,这总是一个肮脏的 hack,但这是在 OpenCV 中显示图像的常用方式...)

关于opencv - ROS Image subscriber - 不出现弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com