kinect学习笔记2
来源:互联网 发布:泛函是什么 知乎 编辑:程序博客网 时间:2024/05/17 15:21
kinect入门以后,又学习了一点关于opengl、ARToolkit和opencv的知识,接下来要实现的一个功能是:
用kinect捕获彩色图像,利用ARToolkit识别标志,显示虚拟物体。
参考博文:http://www.hitl.washington.edu/artoolkit/mail-archive/message-thread-00488-Intel-OpenCV-for-ARToolK.html
【为什么……上一篇写的关于ARToolkit配置的文章一直都没有审核通过呢……就这样失踪了!抓狂抓狂抓狂】
1.设计main函数:
(1)初始化
(2)主循环
(3)退出
2.函数功能划分:
(1)初始化:准备摄像机参数+初始化kinect
(2)主循环:获取被摄图像+检测标志+绘制模型
(3)退出:结束进程。
3.功能实现:
(1)主函数:
int main(int argc, char **argv){glutInit(&argc, argv);init();initKinect();argMainLoop( NULL, keyEvent, mainLoop );NuiShutdown();return (0);}
(2)初始化的函数实现:
static void init( void ){ARParam wparam;xsize=640;ysize=480;if( arParamLoad(cparam_name, 1, &wparam) < 0 ) {printf("Camera parameter load error !!\n");exit(0);}arParamChangeSize( &wparam, xsize, ysize, &cparam );arInitCparam( &cparam );arParamDisp( &cparam );if( (patt_id=arLoadPatt(patt_name)) < 0 ) {//patt_id在这里被赋值printf("pattern load error !!\n");exit(0);}argInit( &cparam, 1.0, 0, 0, 0, 0 );}
static void initKinect(){if (FAILED(hr)){std::cout<<"NUIinitialize failed!"<<std::endl;return ;}nextColorFrameEvent =CreateEvent(NULL,true,FALSE,NULL);hr=NuiImageStreamOpen(NUI_IMAGE_TYPE_COLOR,NUI_IMAGE_RESOLUTION_640x480,0,2,nextColorFrameEvent,&colorStreamHandle);if (FAILED(hr)){std::cout<<"can not open the color stream"<<std::endl;NuiShutdown();return ;}}
(3)主循环的函数实现:
static void mainLoop(void){ARMarkerInfo *marker_info;int marker_num;int j, k;if( count2 == 0 ) arUtilTimerReset();count2++; //计数,循环多少次getpdataFromkinect(); //从kinect获取下一帧argDrawMode2D();//绘制模型?二维的需要绘制什么模型?argDispImage( pdata, 0,0 );//显示摄像头拍摄的图像image->imageData=(char *)pdata;cvCvtColor(image,imagegrey,CV_BGRA2GRAY);if( arDetectMarker(pdata, thresh, &marker_info, &marker_num) < 0 ) {cleanup();exit(0);}arVideoCapNext();k = -1;for( j = 0; j < marker_num; j++ ) {if( patt_id == marker_info[j].id ) {if( k == -1 ) k = j;else if( marker_info[k].cf < marker_info[j].cf ) k = j;}}if( k == -1 ) {argSwapBuffers();return;}arGetTransMat(&marker_info[k], patt_center, patt_width, patt_trans);draw();imagegreyPre->imageData=imagegrey->imageData;argSwapBuffers();}
程序的主要框架就是这些,由于科研要求这里不附完整代码,供自己记录和大家交流。
————————————————————————————
2014.7.10补充:
找到实用的ARToolkit程序解释:
http://blog.sina.com.cn/s/blog_7ebf4bbc0102uwvn.html
0 0
- kinect学习笔记2
- kinect 学习笔记一
- kinect 学习笔记一
- kinect学习笔记1
- Kinect学习笔记
- (转)Kinect+OpenNI学习笔记
- kinect开发入门学习笔记
- Kinect API接口学习笔记
- Kinect学习笔记一ColorFrame
- Kinect学习笔记二DepthFrame
- Kinect学习笔记三BodyIndex
- Kinect学习笔记四Body
- Kinect学习笔记五InfraredFrame
- Baxter学习笔记2-Kinect摄像头驱动安装篇
- kinect学习笔记五(线程并发)
- kinect C#编程学习笔记二
- kinect学习笔记---常用文件后缀
- Kinect学习笔记-零-准备篇
- Android短信发送器
- 解方程 (允许误差)
- uva 111
- 【IOS学习】Objective-C 协议,以及demo
- 筑梦创想:登陆钓鱼岛Unity3d工程文件发布啦!包括后台程序
- kinect学习笔记2
- IOS 使用相机或者在相册里获取图片
- Android 事件传递机制
- IOS delegate与protocol
- Android-HTTP通讯总结!
- android api分析09 实例
- 堪称最好的A*算法
- 最小化托盘单击左键响应不同窗口
- java7之forkjoin实现