采用opencv读取xtion pro live的数据
来源:互联网 发布:docker web mysql 编辑:程序博客网 时间:2024/06/05 10:46
记得以前读取xtion pro live的深度数据和彩色数据时,主要采用的是直接读取ni的类。采用这种直接的方法比较麻烦,还要写专门的读取的程序,调用ni的函数。现在opencv2集成了openni,可以直接采用videocapture读取深度数据和彩色数据。相比之下,可能有些功能是没有那么齐全。
那么怎么直接用opencv读取openni呢?主要分为以下几个步骤:
1、安装openni库和primesensor的驱动。
参考http://blog.csdn.net/jasmine_shine/article/details/46235911进行安装。
2、安装opencv的时候配置并编译openni。
参考http://www.samontab.com/web/2014/06/installing-opencv-2-4-9-in-ubuntu-14-04-lts/进行opencv的配置。其中,在cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON WITH_OPENNI=ON ..的时候发现选择添加WITH_OPENNI时出现错误,并没有将这个添加进去。于是采用cmake-gui进行配置,将WITH-OPENNI选中,并configure,然后再执行后面的make。个人估计是cmake-gui具有很多直接cmake没有的性能。
3、测试。
本人是基于ubuntu12.04的环境,主要采用QT进行编译。新建一个QT的空工程。
.pro文件:
SOURCES += \ main.cppINCLUDEPATH += /usr/local/include \######opencv###### /usr/local/include/opencv \ /usr/local/include/opencv2 \LIBS += /usr/local/lib/libopencv_highgui.so \ /usr/local/lib/libopencv_core.so \ /usr/local/lib/libopencv_imgproc.so \
main.cpp
#include "opencv2/core/core.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>using namespace cv;using namespace std;int main(){cout << "opening device(s)" << endl;VideoCapture sensor1;sensor1.open(CV_CAP_OPENNI_ASUS);//VideoCapture sensor2;sensor2.open(CV_CAP_OPENNI_ASUS+1);if( !sensor1.isOpened() ){ cout << "Can not open capture object 1." << endl; return -1;}for(;;){ Mat depth1,depth2; if( !sensor1.grab() ){ cout << "Sensor1 can not grab images." << endl; return -1; }else if( sensor1.retrieve( depth1, CV_CAP_OPENNI_DEPTH_MAP ) ) imshow("depth1",depth1);/* if( !sensor2.grab() ){ cout << "Sensor2 can not grab images." << endl; return -1; }else if( sensor2.retrieve( depth2, CV_CAP_OPENNI_DEPTH_MAP ) ) imshow("depth2",depth2);*/ if( waitKey( 30 ) == 27 ) break; }}
这是videocapture读取的就是CV_CAP_OPENNI_ASUS,因为我是采用的华硕的xtion pro live,如果是kinect,那么就是CV_CAP_OPENNI。
测试程序输出:
以上就是16位的原始深度数据。
4、备注
出现问题一:
以上仅仅只是采用QT进行opencv的测试,而直接采用cmake却出现了以下错误:
*You should manually point CMake variable OpenCV_DIR to your build of OpenCV library.
Call Stack (most recent call first):
src/CMakeLists.txt:9 (FIND_PACKAGE)`
CMake Warning at /usr/local/opencv-2.4.9/cmake/OpenCVConfig.cmake:161 (message):
Found OpenCV Windows Pack but it has not binaries compatible with your
configuration.*
一般在写cmakelist文件的时候,主要FIND_PACKAGE(OPENCV REQUIRED)和TARGET_LINK_LIBRARIES(MY_TARGET_NAME ${OpenCV_LIBS})就可以了。原因是采用cmake-gui进行编译的时候,有两个OpenCVConfig.cmake文件,一个是在build文件,一个是在cmake文件,而cmake-gui直接默认的是build文件,所以就出现了上述错误。只要将where to build the binaries这一栏的数据改为usr/local/opencv-2.4.9/cmake,进行configure,然后generate,便可。
出现问题二:
以上问题是解决了,但是随后又出现了一个问题:
WARNING: Target “main” requests linking to directory “/usr/lib”. Targets may link only to libraries. CMake is dropping the item.
make[2]: * 没有规则可以创建“../bin/main”需要的目标“/usr/local/opencv-2.4.9/cmake/lib/libopencv_videostab.so.2.4.9”。 停止。
程序在生成可执行文件的时候make不通过,于是cmake-gui又换回以前的usr/local/opencv-2.4.9/build,configure,generate,重新编译一次opencv。当我再次执行make的时候还是出现上述问题。等到我想重装opencv的时候,删除掉安装包文件,再次执行工程的make,发现可以编译通过。估计是make的时候lib链接到了/usr/local/opencv-2.4.9/cmake/lib,但是这个文件下确实没有libopencv_videostab.so.2.4.9这个静态库。
所以,现在既可以在QT下使用opencv,也可以直接采用cmake的形式在ubuntu下使用了。真是百般折腾啊,就是为了能直接用opencv读取xtion pro live的数据。
- 采用opencv读取xtion pro live的数据
- 读取xtion pro live的程序笔记。
- Asus Xtion Pro Live驱动
- Asus Xtion Pro Live标定
- ROS下安装xtion pro live
- ROS启动ASUS Xtion PRO LIVE摄像头
- ubuntu 14.04 + openni + primesense + xtion pro live
- ROS下使用ASUS Xtion Pro Live
- 使用xtion pro live将点云数据变成激光数据(pointcloud to laserscan)
- 基于kalibr的xtion pro live 相机及与IMU的标定
- Roomba, Xtion Pro live 实现360度全景照片panorama 无法启动的解决方案
- ROS下订阅topic,显示并保存Kinect(Xtion pro live )深度摄像机的RGB图像
- ubuntu14.04安装OpenNI2+驱动XTion PRO Live
- Ubuntu 16.04 ROS-kinetic安装华硕Xtion Pro Live 驱动
- ROS 学习系列 -- Roomba, Xtion Pro live 实现360度全景照片panorama 无法启动的解决方案
- 华硕Xtion Pro开发环境搭建(1)-OpenCV配置
- ubuntu12.04 + fuerte ROS下安装xtion pro live 显示图像
- ros基于openni2.launch使用rgbd camera(xtion pro live)
- cocos2d-x 架构和引擎目录
- POJ 1014--Dividing
- python 寻找前5个默尼森数
- centos 7 红帽认证 tigervnc服务搭建
- XStream简单实例
- 采用opencv读取xtion pro live的数据
- 高光谱遥感图像处理(14)-----ENVI使用教程之监督分类与非监督分类
- mycat ShareJoin后少了2条记录的问题剖析详细过程
- 第三届河南省大学生程序设计竞赛题型简要分析
- HDU 1395 2^x mod n = 1(快速幂取模)
- 技术周报 Gif图片 LoadingView
- js 实现数字的进制转换
- bzoj3224普通平衡树 Splay
- ubuntu网络