多语言展示
当前在线:1085今日阅读:27今日分享:41

如何用Opencv保存Kinect的图片

用opencv将从kinect端获取的视频流以图像的形式保存下来,可以用来进行图像处理。模式识别等问题,具体的配置见其它经验,此处只讲最核心的图片保存,包括彩色图片,深度图片,骨架图片
工具/原料

WIN7+VS2012+opencv2.44+kinect 1.0

方法/步骤
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; }}

注意事项

请在下面按大拇指

推荐信息