diff --git a/src/include/qnode.hpp b/src/include/qnode.hpp index f7e24fd..e325147 100644 --- a/src/include/qnode.hpp +++ b/src/include/qnode.hpp @@ -75,7 +75,7 @@ private: void powerCallback(const std_msgs::Float32& message_holder); //void myCallback(const std_msgs::Float64& message_holder); void batteryCallback(const sensor_msgs::BatteryState &message); - void imageCallback(const sensor_msgs::CompressedImageConstPtr &msg);//camera callback function + void imageCallback(const sensor_msgs::ImageConstPtr &msg);//camera callback function QImage Mat2QImage(cv::Mat const &src); cv::Mat QImage2Mat(QImage &image); diff --git a/src/main/mainwindow.cpp b/src/main/mainwindow.cpp index ea30a81..c204fb2 100644 --- a/src/main/mainwindow.cpp +++ b/src/main/mainwindow.cpp @@ -8,6 +8,7 @@ MainWindow::MainWindow(int argc, char **argv, QWidget *parent) : { qnode.init(); + qnode.SubAndPubTopic(); ui->setupUi(this); initUis(); connections(); diff --git a/src/main/qnode.cpp b/src/main/qnode.cpp index 445cca8..f8a80bb 100644 --- a/src/main/qnode.cpp +++ b/src/main/qnode.cpp @@ -44,9 +44,9 @@ void QNode::SubAndPubTopic(){ &QNode::batteryCallback, this); image_transport::ImageTransport it(n); - image_sub0 = n.subscribe("camera/rgb/image_raw",100,&QNode::imageCallback,this); - + //image_sub = it.subscribe("camera/rgb/image_raw", 100, &QNode::imageCallback, this); + //image_sub0 = n.subscribe("camera/rgb/image_raw",100,&QNode::imageCallback,this) //chatter_publisher = n.advertise("chatter1", 1000); //chatter_subscriber = n.subscribe("chatter",1000,&QNode::myCallback,this); @@ -161,12 +161,11 @@ void QNode::AutoMove(float speed_linear, float speed_turn, ros::spinOnce(); } -int i =0; + + //速度回调函数 void QNode::speedCallback(const nav_msgs::Odometry::ConstPtr& msg) { - - std::cout<twist.twist.linear.x); emit speed_th(msg->twist.twist.angular.z); @@ -174,21 +173,21 @@ void QNode::speedCallback(const nav_msgs::Odometry::ConstPtr& msg) } -void QNode::imageCallback(const sensor_msgs::CompressedImageConstPtr &msg) +void QNode::imageCallback(const sensor_msgs::ImageConstPtr &msg) { - ROS_INFO("I'm setting picture in mul_t callback function!"); - cv_bridge::CvImagePtr cv_ptr; - - try { - //深拷贝转换为opencv类型 - cv_bridge::CvImagePtr cv_ptr_compressed = - cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8); - QImage im = Mat2QImage(cv_ptr_compressed->image); - emit show_image(im); - } catch (cv_bridge::Exception& e) { - //log(Error, ("video frame0 exception: " + QString(e.what())).toStdString()); - return; - } + try + { + cv_bridge::CvImageConstPtr cv_ptr = + cv_bridge::toCvShare(msg, sensor_msgs::image_encodings::RGB8); + cv::Mat img = cv_ptr->image; + QImage image = QImage(img.data,img.cols,img.rows,img.step[0],QImage::Format_RGB888);//change to QImage format + ROS_INFO("I'm setting picture in mul_t callback function!"); + image.save("/home/jackyma/test.jpg"); + } + catch (cv_bridge::Exception& e) + { + ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str()); + } ros::spin(); }