公式ROSページの画像購読チュートリアルに従っています。my_subscriber を実行すると、ウィンドウ ポップアップが表示されません。私はタイプする -
rosrun image_transport_tutorial my_subscriber
出力は -
init done
opengl support available
そして、何も起こりません。(my_subscriber.cpp に出力行がないため、出力 "init done" でさえ説明できません)
私はこのチュートリアルに従っています - ROSチュートリアル
私は 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");
}
解決済み:回答の1つで提案されているように、tryブロックにwaitKey関数を追加しました。
cv::waitKey(30);