通过roslaunch打开astra摄像头后,写了订阅rgb节点的opencv程序去订阅/camera/rgb/image_raw,编译没问题,运行时imshow()窗口出现两秒钟就卡死黑屏,无法显示图像,如图
下面是订阅节点代码,求助该如何解决:
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <sensor_msgs/image_encodings.h>
#include <cv_bridge/cv_bridge.h>
using namespace std;
using namespace cv;
void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
cv_bridge::CvImagePtr cv_ptr;
try
{
cv_ptr = cv_bridge::toCvCopy(msg,sensor_msgs::image_encodings::BGR8);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
}
Mat img_rgb = cv_ptr->image;
imshow("view",img_rgb);
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "image_listener");
ros::NodeHandle nh;
image_transport::ImageTransport it(nh);
cv::namedWindow("view");
image_transport::Subscriber sub = it.subscribe("camera/rgb/image_raw", 1,imageCallback);
ros::spin();
return 0;
}