#include"cv.h"
#include"highgui.h"
#include"XnCppWrapper.h"
#include"iostream"
using namespace std;
xn::DepthGenerator depth;
xn::ImageGenerator image;
xn::DepthMetaData depthMD;
xn::ImageMetaData imageMD;
void main()
{
/*--------1.生成openni及Opencv环境----------*/
xn::Context mycontext;
mycontext.Init();
IplImage * image16U = cvCreateImage( cvSize( 640 ,480 ),IPL_DEPTH_16U, 1 );
IplImage * image8U = cvCreateImage( cvSize( 640, 480 ), 8, 3 );
IplImage * depthimage = cvCreateImage( cvSize( 640, 480 ), 8, 1 );
IplImage * imageshow = cvCreateImage( cvSize( 640, 480 ), 8, 3 );
cvNamedWindow( "depth",1 );
cvNamedWindow( "image",1 );
//mycontext.OpenFileRecording("d:\\record.oni");
/*--------2.输出模式---------*/
XnMapOutputMode mapmode;
mapmode.nFPS = 30;
mapmode.nXRes = 640;
mapmode.nYRes = 480;
/*-----3.创造生成器-------------*/
depth.Create( mycontext );
depth.SetMapOutputMode( mapmode );
image.Create( mycontext );
image.SetMapOutputMode( mapmode );
/*--------------*4.Record*----------------*/
XnChar filename[ 30 ] = "e:\\test\\waitnoneupdateall.oni"; /*"e:\\qoni\\21_90\\21_90_a.oni"*/;
xn::Recorder myrecord;
myrecord.Create( mycontext );
myrecord.SetDestination( XN_RECORD_MEDIUM_FILE , filename );
myrecord.AddNodeToRecording( depth , XN_CODEC_16Z_EMB_TABLES );
myrecord.AddNodeToRecording( image , XN_CODEC_JPEG );
/*-------------5.-----------------*/
/*----5.generating data-------*/
mycontext.StartGeneratingAll();
unsigned int i = 0;
int key = 0;
while( key != 27 && ! mycontext.WaitAndUpdateAll( ) )//所有节点更新完时,记录一次。//None与all到底区别在哪还不是很清楚
{
if( i > 180 )
break;
i ++;
cout << i << endl;
/*cout << mycontext.WaitAndUpdateAll() << endl; 更新完则其值为0!*/
depth.GetMetaData( depthMD );
image.GetMetaData( imageMD );
/*-------RGB转换生成---------*/
memcpy( image8U->imageData,imageMD.Data(),640 * 480 * 3 );
cvCvtColor( image8U, imageshow , CV_RGB2BGR );
/*---------depth转换生成---------------*/
memcpy( image16U ->imageData, depthMD.Data(),640 * 480 * 2 );
cvCvtScale( image16U , depthimage , 255 /4096.0 ,0 );
cvShowImage( "depth" , depthimage );
cvShowImage( "image" , imageshow );
key = cvWaitKey( 20 );//
//mycontext.WaitAndUpdateAll( );//
}
myrecord.Release( );
/*--------6.release---------------*/
mycontext.StopGeneratingAll( );
mycontext.Release( );
cvReleaseImage( &depthimage );
cvReleaseImage( &imageshow );
cvDestroyWindow( "image" );
cvDestroyWindow( "depth" );
}
deep-and-image.rar_.oni_OpenNI、OpenCV_Openni_oni
版权申诉
100 浏览量
2022-09-21
17:24:40
上传
评论
收藏 1KB RAR 举报
林当时
- 粉丝: 95
- 资源: 1万+
最新资源
- 通道处理过程的模拟通常涉及对通道处理机制的理解与实现.txt
- Flume进阶-自定义拦截器jar包
- Dubins曲线算法讲解和在运动规划中的使用.pdf
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.dta
- 上市公司-股票性质数据-工具变量(民企、国企、央企)2003-2022年.xlsx
- Reeds+Shepp曲线算法讲解和实现.pdf
- 毕业设计基于SpringBoot+MyBatisPlus+MySQL+Vue的外卖配送信息系统源代码+数据库
- 词向量(Word Embeddings)是自然语言处理(NLP)领域的一种重要技术.txt
- Surfer,线性函数
- MyBatis 的动态 SQL 是其核心特性之一.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈