ubuntu14 xtion openni2
安装openni2
http://matrivian.github.io/computer%20vision/2015/04/07/openni2-2-and-nite2-2-on-ubuntu-14-04-lts.html
使用openni2获取xiton彩色图和深度图
http://www.cnblogs.com/yemeishu/archive/2013/01/11/2856859.html
CMakeLists.txt中openni2的配置
https://charlyhuangstudio.wordpress.com/2014/08/30/openni-2-%E5%92%8C-opencv-%E7%9A%84-cmakelists/
main() { OpenNI::initialize(); puts( "Kinect initialization..." ); Device device; if ( device.open( openni::ANY_DEVICE ) != 0 ) { puts( "Kinect not found !" ); return -1; } puts( "Kinect opened" ); VideoStream depth, color; color.create( device, SENSOR_COLOR ); color.start(); puts( "Camera ok" ); depth.create( device, SENSOR_DEPTH ); depth.start(); puts( "Depth sensor ok" ); VideoMode paramvideo; paramvideo.setResolution( 640, 480 ); paramvideo.setFps( 30 ); paramvideo.setPixelFormat( PIXEL_FORMAT_DEPTH_100_UM ); depth.setVideoMode( paramvideo ); paramvideo.setPixelFormat( PIXEL_FORMAT_RGB888 ); color.setVideoMode( paramvideo ); puts( "Réglages des flux vidéos ok" ); // If the depth/color synchronisation is not necessary, start is faster : //device.setDepthColorSyncEnabled( false ); // Otherwise, the streams can be synchronized with a reception in the order of our choice : device.setDepthColorSyncEnabled( true ); device.setImageRegistrationMode( openni::IMAGE_REGISTRATION_DEPTH_TO_COLOR ); VideoStream** stream = new VideoStream*[2]; stream[0] = &depth; stream[1] = &color; puts( "Kinect initialization completed" ); if ( device.getSensorInfo( SENSOR_DEPTH ) != NULL ) { VideoFrameRef depthFrame, colorFrame; cv::Mat colorcv( cv::Size( 640, 480 ), CV_8UC3, NULL ); cv::Mat depthcv( cv::Size( 640, 480 ), CV_16UC1, NULL ); cv::namedWindow( "RGB", CV_WINDOW_AUTOSIZE ); cv::namedWindow( "Depth", CV_WINDOW_AUTOSIZE ); int changedIndex; while( device.isValid() ) { OpenNI::waitForAnyStream( stream, 2, &changedIndex ); switch ( changedIndex ) { case 0: depth.readFrame( &depthFrame ); if ( depthFrame.isValid() ) { depthcv.data = (uchar*) depthFrame.getData(); cv::imshow( "Depth", depthcv ); } break; case 1: color.readFrame( &colorFrame ); if ( colorFrame.isValid() ) { colorcv.data = (uchar*) colorFrame.getData(); cv::cvtColor( colorcv, colorcv, CV_BGR2RGB ); cv::imshow( "RGB", colorcv ); } break; default: puts( "Error retrieving a stream" ); } cv::waitKey( 1 ); } cv::destroyWindow( "RGB" ); cv::destroyWindow( "Depth" ); } depth.stop(); depth.destroy(); color.stop(); color.destroy(); device.close(); OpenNI::shutdown(); }
posted on 2017-01-13 10:42 lightofaugust 阅读(291) 评论(0) 编辑 收藏 举报