ROS下訂閱topic,顯示並儲存Kinect(Xtion pro live )深度點雲圖
這裡訂閱了的是Kinect for Xbox One或是華碩的Xtion Pro Live的topic:/camera/depth_registered/points,初學者務必要了解什麼是depth_registered(配準)。這個topic是包含了利用相機內建的calibration引數來配準RGB圖和深度圖,也即它的畫素點包含了顏色和深度資訊。
1、編寫源程式
下面給出源程式,源程式來源:http://blog.csdn.net/yaked/article/details/52584231,親測可用,其他的都不太行!
#include <iostream> #include <ros/ros.h> #include <pcl/point_cloud.h> #include <pcl_conversions/pcl_conversions.h> #include <pcl/io/pcd_io.h> #include <pcl/visualization/cloud_viewer.h> #include <sensor_msgs/PointCloud2.h> using std::cout; using std::endl; using std::stringstream; using std::string; using namespace pcl; unsigned int filesNum = 0; bool saveCloud(false); boost::shared_ptr<visualization::CloudViewer> viewer; void cloudCB(const sensor_msgs::PointCloud2& input) { pcl::PointCloud<pcl::PointXYZRGBA> cloud; // With color pcl::fromROSMsg(input, cloud); // sensor_msgs::PointCloud2 ----> pcl::PointCloud<T> if(! viewer->wasStopped()) viewer->showCloud(cloud.makeShared()); if(saveCloud) { stringstream stream; stream << "inputCloud"<< filesNum<< ".pcd"; string filename = stream.str(); if(io::savePCDFile(filename, cloud, true) == 0) { filesNum++; cout << filename<<" Saved."<<endl; } else PCL_ERROR("Problem saving %s.\n", filename.c_str()); saveCloud = false; } } void keyboardEventOccured(const visualization::KeyboardEvent& event, void* nothing) { if(event.getKeySym() == "space"&& event.keyDown()) saveCloud = true; } // Creates, initializes and returns a new viewer. boost::shared_ptr<visualization::CloudViewer> createViewer() { boost::shared_ptr<visualization::CloudViewer> v(new visualization::CloudViewer("OpenNI viewer")); v->registerKeyboardCallback(keyboardEventOccured); return(v); } int main (int argc, char** argv) { ros::init(argc, argv, "pcl_write"); ros::NodeHandle nh; cout<< "Press space to record point cloud to a file."<<endl; viewer = createViewer(); ros::Subscriber pcl_sub = nh.subscribe("/camera/depth_registered/points", 1, cloudCB); ros::Rate rate(30.0); while (ros::ok() && ! viewer->wasStopped()) { ros::spinOnce(); rate.sleep(); } return 0; }
2、在ubuntu終端啟動Xtion pro live 驅動
3、用qt編譯並執行節點
小便利:這裡強烈建議初學者在qt下執行ros節點,主要是因為qt5.5.0以上版本已經可以安裝ros外掛,使得建立工作空間(catkin_ws)、包(package)、和節點(node)都可以不再在終端下用命令列進行,非常有助於幫助我們進行後續的程式設計及管理。
4、執行節點後結果顯示
注意:按空格鍵會將當前的點雲儲存下來,儲存到你所建立的package資料夾下。名字為inputcloud0.pcd,inputcloud1.pcd,...依次類推。
至此,ROS下訂閱topic並儲存Xtion深度點雲圖實現結束!
相關推薦
ROS下訂閱topic,顯示並儲存Kinect(Xtion pro live )深度點雲圖
這裡訂閱了的是Kinect for Xbox One或是華碩的Xtion Pro Live的topic:/camera/depth_registered/points,初學者務必要了解什麼是depth_registered(配準)。這個topic是包含了利用相機內建的cal
影象的讀取,顯示與儲存(基於skimage模組)
一 skiamge模組 skimage包的全稱是scikit-image SciKit (toolkit for SciPy) ,它對scipy.ndimage進行了擴充套件,提供了更多的圖片處理功能。它是由python語言編寫的,由scipy 社群開發和維護。skimage包由許多的子
Python3原生爬蟲獲取熊貓直播某一分類下的主播人氣並儲存到Excel
import re import openpyxl from urllib import request # 斷點除錯 class Spider: url = 'https://www.panda.tv/cate/lol' root_pattern = '<di
影象的讀取,顯示以及儲存
%讀取影象 image = imread(‘hunan.jpg’); %顯示影象 imshow(image) read_show_image 警告: 影象太大,無法在螢幕上顯示;將以 33% 顯示 In images
16位深度圖片顯示並儲存
Opencv 16位深度圖片顯示並儲存 專案需要,要將cmos相機的資料讀出來,並顯示出圖片來。同事已經通過FPGA+USB的方式,把相機並行資料轉成序列,我需要做的就是上位機,找到frame valid和line valid有位,讀取一個frame的資料後,顯示出來。 設計思路: 三個th
VTK(2)—— 雙view,顯示並聯動操作
前言:接到一個新的需求 window單視窗程式,雙view,顯示並聯動操作,做了兩種方式進行實現,程式碼思路和原始碼如下: (一)程式碼思路 一、判定誰動了? 方法1:通過當前事件的視窗位置與視窗大小中心軸進行比對 方法2:通過移動後的相機位置與兩個view中相機的
android popupwindow從下彈出,顯示在某控制元件上方
popupwindow彈出時從下往上,隱藏時從上往下,並且顯示在指定控制元件上方View inflate = LayoutInflater.from(getContext()).inflate(R.layout.popupwindow_shop, null);
PowerShell獲取指定目錄下檔案列表和大小並儲存成txt文件
#列出filepath下所有子資料夾並統計子資料夾大小 function filesize ([string]$filepath) { if ($filepath -eq $null) { throw "路徑不能為空" } $
【Python】pandas遍歷讀取excel檔案,修改並儲存(一)
code ide and lib version: python 2.7(64) pycharm 2018.1.4 xlrd 1.1.0 pandas 0.23.1 play:
Opencv 16位深度圖片顯示並儲存
專案需要,要將cmos相機的資料讀出來,並顯示出圖片來。同事已經通過FPGA+USB的方式,把相機並行資料轉成序列,我需要做的就是上位機,找到frame valid和line valid有位,讀取一個frame的資料後,顯示出來。 設計思路: 三個thread,第一個從us
vs2013+qt5.51+vtk 實現的 雙view,顯示並聯動操作
1.首先我們必須將QVTKWidget加入到Qt Designer,只需找到編譯好的vtk的release版本下的QVTKWidgetPlugin.dll,QVTKWidgetPlugin.exp,QVTKWidgetPlugin.lib放入到自己QT下的designer
基於opencv下對視頻的灰度變換,高斯濾波,canny邊緣檢測處理,同窗體顯示並保存
rmi 其他 AS info ali 利用 測試結果 14. 中間 如題:使用opencv打開攝像頭或視頻文件,實時顯示原始視頻,將視頻每一幀依次做灰度轉換、高斯濾波、canny邊緣檢測處理(原始視頻和這3個中間步驟處理結果分別在一個窗口顯示),最後將邊緣檢測結果保存為一個
磁碟當前目錄下存在檔案 c1.txt,其中存放了一段英文文字。請程式設計實現將c1.txt中英文文字全部轉換為答謝字母,並儲存到c2.txt中。要求:c2.txt檔案前面儲存的是c1.txt文案中的原始文字,後面緊跟著的是轉換後的文字
#include"stdio.h"#include"string.h" void main(){ FILE *fp1,*fp2; char ch[1000]=" ",c; int i=0; fp1=fopen("c1.txt","r"); fp2=fopen("c2.txt","w");
Windows/Ubuntu下,將所有檔名字列舉出來並儲存到txt檔案中
Windows 使用如下的DOS命令來實現: dir /s /b > lists.txt 可以將當前路徑下的所有檔案的“檔案路徑+檔名”儲存在lists.txt中。 其中,/s表示的是“列
Linux下建立,進入目錄的許可權,建立並顯示普通檔案的許可權
許可權: 檔案許可權 1.檔案訪問者: 擁有者u——-user 所屬組g——-group 其他使用者o—–other 2.檔案訪問許可權的種類: 可讀(r) 可寫(w) 可執行(x) 建立一個目錄,並進入 目錄test
jQuery基礎(動畫篇 animate,顯示隱藏,淡入淡出,下拉切換)
app 必須 條件 工作 函數 我們 淡入淡出 延時 button 1.jQuery中隱藏元素的hide方法 讓頁面上的元素不可見,一般可以通過設置css的display為none屬性。但是通過css直接修改是靜態的布局,如果在代碼執行的時候,一般是通過js控制元素的
Python下opencv使用筆記(一)(圖像簡單讀取、顯示與儲存)
操作 灰度圖 清晰 ren from tty ims 圖像 type 寫在之前 從去年開始關註python這個軟件,途中間間斷斷看與學過一些關於python的東西。感覺python確實是一個簡單優美、easy上手的腳本編程語言,眾多的第三方庫使得py
[實例]ROS使用OpenCV讀取圖像並發布圖像消息在rviz中顯示
top 選項 == works rate pic echo 內容 color 思路: (1)使用opencv讀取本地圖像 (2)調用cv_bridge::CvImage().toImageMsg()將本地圖像發送給rviz顯示 一、使用opencv讀取本地圖像
2.8.2 並發下的ArrayList,以及源碼分析
blog util join() explicit ted cep ole 問題: port package 第二章.並發下的ArrayList;import java.util.ArrayList;import java.util.List;/** * Created b
docker下安裝centos,並在其上搭建lnmp環境
方便 libxml bic spro yum 啟動 openss ont dock 一、安裝CentOs容器 1.進入docker下載CentOs,這裏我使用的CentOs6.8 docker pull centos:6.8 2.創建容器 sudo docker r