ROS下订阅topic,显示并保存Kinect(Xtion pro live )深度摄像机的RGB图像

3 篇文章 1 订阅

这里订阅了的是Kinect for Xbox One或是华硕的Xtion Pro Live的topic:/camera/rgb/image_raw

1、编写源程序

#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h>
#include <iostream>

using std::cout;
using std::endl;
using std::stringstream;
using std::string;

unsigned int fileNum = 1;
bool saveCloud(false);

void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
  cv::imshow("Show RgbImage", cv_bridge::toCvShare(msg,"rgb8")->image);
  char key;
  key=cvWaitKey(33);
  if(key==32)           //the Ascii of "Space key" is 32 
  saveCloud = true;
  if(saveCloud)
  {
    stringstream stream;
    stringstream stream1;
    stream <<"Goal RgbImage" << fileNum<<".jpg";
    stream1 <<"/home/lijunliang/qt_catkin_ws/src/GetRgbImage/" << fileNum <<".jpg";
    string filename = stream.str();
    string filename1 = stream1.str();
    cv::imwrite(filename1,cv_bridge::toCvShare(msg)->image);
    saveCloud = false;
    fileNum++;
    cout << filename << " had Saved."<< endl;
  }
}

int main(int argc, char **argv)
{
  ros::init(argc, argv, "Image_listener");
  ros::NodeHandle nh;
  cv::namedWindow("Show RgbImage");
  cv::startWindowThread();
  image_transport::ImageTransport it(nh);
  image_transport::Subscriber sub = it.subscribe("/camera/rgb/image_raw", 1, imageCallback);
  ros::spin();
  cv::destroyWindow("Show RgbImage");
}

注意:程序中使用cvwaitkey()函数 响应 键盘空格的事件,从而达到按下键盘空格键就自动保存图片到自己的package目录下!

 stream1 <<"/home/lijunliang/qt_catkin_ws/src/GetRgbImage/" << fileNum <<".jpg";

以上这行代码注意路径务必改成自己package 的路径!

2、在ubuntu终端启动Xtion pro live 驱动


3、用qt编译并运行节点


4、运行节点后结果显示

注意:按空格键会将当前的RGB图保存下来,保存到你所建立的package文件夹下。名字为1.jpg,2.jpg,...依次类推。

至此,ROS下订阅topic并保存Xtion pro live (kinect)深度摄像机的RGB图实现结束!

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值