Я следую за графическим оформлением учебника на официальной странице ROS. при запуске my_subscriber не появляется всплывающее окно окна. Я типа -ROS Image подписчик - всплывающее окно окна не отображается
rosrun image_transport_tutorial my_subscriber
выход -
init done
opengl support available
И ничего не происходит. (Даже выход «INIT сделано» необъяснимая, потому что не выводится строка в my_subscriber.cpp)
Я после этого учебника - ROS tutorial
У меня есть roscore и rosrun image_transport_tutorial my_publisher pathtofile уже работает в dofferent терминалах. Я проверил, что издатель издает, запустив команду
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");
}
Решено: я добавил функцию WaitKey в блоке попробовать, как это предлагается в одном из ответов.
cv::waitKey(30);
Вы проверили, что тема камеры/изображения что-то публикует? Запустите это: $ rostopic list -v –
да ... я проверил .. он публикуется. здесь выход - Опубликованные темы: .. */камера/изображение [sensor_msgs/Image] 1 издатель Подписанные темы: */rosout [rosgraph_msgs/Log] 1 подписчик */камеры/изображения [sensor_msgs/Image] 1 абонент – user12340
, если у вас установлен пакет image_view, попробуйте выполнить следующее: $ rosrun image_view image_view image: =/camera/image. Скажи мне, что у тебя есть. –