1、首先打开一个工程,这个工程是利用kinect能产生正确的彩色数据流,深度流等,并能利用Opencv在电脑上正确显示,如下图,彩色图,本人将骨架画在彩色图中可以一起保存

2、深度图

3、骨架图

4、你想通过按键盘上的什么键来保存哪种相应的图,定义: 小写“c” 彩色图片(如果将骨架加在彩色图中,会将彩色图片和 骨架数据一起保存) 小写“d” 深度图片 小写“s” 骨架图片 小写“a” 上述所有图片获取按键值,用 cvWaitKey()函数,会返回当前的按建值,若是Esc没退出显示,并释放设备,如下定义

5、最后调用一下检测按键的函数,1是函数名,将按键值传过来,2,是相应的按键动作匹配,3是文件要保存的相对路径,4是要保存的图想

6、下面给出核心代码保存图片函数:void imageSaveByKey(int & c){int a=c;switch(a){case 'c': { sprintf(ImagesName, "../Imagesave/color/color%.3d.jpg", cImgNum); cvSaveImage(ImagesName,colorImage);cImgNum++; };break;case 'd': { sprintf(ImagesName, "../Imagesave/depth/depth%.3d.jpg", dImgNum);cvSaveImage(ImagesName,depthImage);dImgNum++; };break;case 's': {sprintf(ImagesName, "../Imagesave/skeleton/skeleton%.3d.jpg", sImgNum);cvSaveImage(ImagesName,skeletonImage);sImgNum++; };break; case 'a': {sprintf(ImagesName, "../Imagesave/color/color%.3d.jpg", cImgNum); cvSaveImage(ImagesName,colorImage);cImgNum++;sprintf(ImagesName, "../Imagesave/depth/depth%.3d.jpg", dImgNum);cvSaveImage(ImagesName,depthImage);dImgNum++;sprintf(ImagesName, "../Imagesave/skeleton/skeleton%.3d.jpg",sImgNum);cvSaveImage(ImagesName,skeletonImage);sImgNum++; };break;default:break;}}